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 = ;
m = val;
return 0;
}
登录后复制
算法
- 将输入权重放入整数变量中。
- 创建一个类weight的对象。
- 将整数值赋给类对象;
- 调用对象的show函数。
在定义的类的构造函数中,执行以下操作:
- 将输入值除以 1000,得到千克 (kg) 值作为商。
- 将输入值除以1000,得到以克(gm)为单位的余数。
如前所述,所有的转换机制都必须在构造函数内定义。构造函数必须是带参数的,并且原始源值必须作为参数传递给构造函数。问题的源代码如下。
示例
#include
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