【发布时间】:2022-01-18 06:17:47
【问题描述】:
#include<iostream>
using namespace std;
class meter
{
private:
float m;
public:
meter()
{
m=0.0;
}
meter(float m1)
{
m=m1;
}
void display()
{
cout<<"the equivalient meter is "<<m<<endl;
}
};
class feet
{
private:
float f;
public:
void input()
{
cout<<"enter the value of feet"<<endl;
cin>>f;
}
operator meter()
{
float m1=f*0.3048;
return(meter(m1)); //line of interest
}
};
int main()
{
feet f2;
meter m2;
f2.input();
m2=f2; //type conversion call
m2.display();
return(0);
}
在上述代码中,在感兴趣的行中; “return(meter(m1))”为哪个对象调用构造函数meter(float m1)?我尝试一次调试并观察一个步骤,但仍然无法弄清楚,我观察到没有创建新对象。是对象m2吗?
【问题讨论】:
-
它是一个构造函数,它正在构造一个仪表对象。它以前没有被调用过,构造函数永远不会。它没有名字,因为它正在构建一个临时的。
-
不清楚你在问什么。
return(meter(m1));使用接受float的构造函数构造一个meter类型的未命名对象。将此类对象分配给m2(或更一般地,返回给调用者)的方式因 C++ 标准而异。
标签: c++ type-conversion operators