C++程序将基本类型转换为对象
C++ 中的基本数据类型是在语言本身中预定义的数据类型;例如 int、float、double 等。对象是类的实例,而 C++ 作为一种面向对象的语言,在基本数据类型和对象之间进行转换是必要的。类充当数据类型的架构计划。虽然这没有具体描述任何数据,但它确实指定了类名代表什么,即类的对象将是什么样子以及可以在其上执行哪些操作。
C++ 语言编译器中没有明确定义从基本数据类型到对象的转换,因此要将基本数据类型转换为对象;程序员必须定义该机制。基本类型如何转换为特定对象是在用户定义类的构造函数中定义的。我们举一个例子来更好地理解这一点。
我们要解决的问题是将以克为单位给出的重量转换为千克和克。为此,我们定义了一个用户定义的类 weight,它包含两个整数成员 kg 和 gm。'kg' 是给定重量的千克值,'gm' 是小于 1 千克的剩余重量,需要进行转换。解决该问题的算法如下所示。
语法
转换语法如下所示:
class Myclass{ private: int classVal; public: MyClass(){ classVal = 0; } MyClass(int val) { classVal = val; } }; int main() { Myclass m; int val = <integer value>; m = val; return 0; }
算法
- 将输入重量存储在一个整型变量中。
- 创建一个 weight 类的对象。
- 将整数值赋给类对象;
- 调用对象的 show 函数。
在定义的类的构造函数中,执行以下操作
- 将输入值除以 1000 以获得千克 (kg) 值作为商。
- 将输入值除以 1000 以获得克 (gm) 值作为余数。
如前所述,所有转换机制都必须在构造函数内定义。构造函数必须是参数化的,并且必须将原始源值作为参数传递给构造函数。问题的源代码如下所示。
示例
#include <iostream> using namespace std; //converts weight in grams to kgs and grams class Weight { private: int kg, gm; public: //default constructor Weight() { kg = 0; gm = 0; } //paramaeterized constructor Weight(int ip) { this->kg = ip / 1000; this->gm = ip % 1000; } //shows the output void show() { cout << "The weight is " << this->kg << " kgs and " << this->gm << " grams." << endl; } }; int main() { //weight in grams int ip = 1085; //conversion done here Weight w; w = ip; w.show(); return 0; }
输出
The weight is 1 kgs and 85 grams.
在示例中,输入在 main 函数中作为 'ip'。还有一个 weight 类 'w' 的对象。我们只是将整数值赋给类对象,并隐式调用了对象的带参数构造函数。构造函数中定义的函数已执行,最后通过调用 'show' 函数显示输出。
结论
在此示例中,从基本类型到用户定义类对象的转换是通过隐式调用构造函数完成的。只要构造函数需要多个基本值来实例化对象,这就可以了。出于这个原因,我们必须显式调用构造函数,然后将基本值作为参数传递给对象构造函数。从对象到基本类型的相反转换是不同的,它需要更复杂的过程才能完成。
广告