C++ 中的原始数据类型是语言本身预定义的数据类型;像int、float、double等。对象是类的实例,而C++是面向对象的语言,原始数据类型和对象之间的转换是必要的。类充当数据类型的架构计划。虽然这没有具体描述任何数据,但它确实指定了类名的含义,即该类的对象是什么样子以及可以对其执行什么操作。
在C++语言编译器中,原始数据类型到对象之间的转换没有明确定义,因此要将原始数据类型转换为对象,必须由程序员定义机制。如何将原始类型转换为特定对象是在用户定义类的构造函数中定义的。我们举一个例子来更好地理解这个问题。
我们正在解决的问题是以克为单位的重量转换为千克和克。为此,我们定义了一个用户定义的类权重,其中包含两个整数成员 kg 和 gm。 “kg”是给定重量的千克值,“gm”是要转换的小于一千克的剩余重量。下面给出解决该问题的算法。
转换的语法如下 -
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; }
在定义的类的构造函数中,执行以下操作:
如前所述,所有的转换机制都必须在构造函数内定义。构造函数必须是带参数的,并且原始源值必须作为参数传递给构造函数。问题的源代码如下。
#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.
在示例中,输入位于主函数内部,为“ip”。还有一个类权重“w”的对象。我们刚刚将整数值分配给类对象,并调用了对该对象的参数化构造函数的隐式调用。构造函数中定义的函数已被执行,最后通过调用show函数显示输出。
在此示例中,从原始类型到用户定义的类对象的转换是使用构造函数的隐式调用完成的。这很好,直到构造函数需要多个原始值来实例化该对象。因此,我们必须显式调用构造函数,然后将原始值作为参数传递给对象构造函数。相反的从对象到原始类型的转换则不同,它需要更复杂的过程来完成。
以上是C++程序将原始类型转换为对象的详细内容。更多信息请关注PHP中文网其他相关文章!