class CBox
{
public:
double m_Length;
double m_Width;
double m_Heigth;
CBox(double side) :m_Length(side), m_Width(side), m_Heigth(side){}
CBox(){}
};
int main()
{
CBox box;
box = 99.0;
}
---------------------------------------------------------------------------------------------------------------------
box = 99.0;这条语句会导致隐式转换,隐式转换的结果是什么?有什么影响?
刚学C++,请指教。
C++单一形参的构造函数赋值时的隐式转换是什么
答案:4 悬赏:70 手机版
解决时间 2021-02-24 14:11
- 提问者网友:溺爱和你
- 2021-02-24 02:38
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-02-24 03:46
box = 99.0;这个语句会先生成一个临时对象,里面的属性都是99.0。然后在调用CBox的operator=给box赋值。这个operator=是编译器默认生成的,原型是 CBox& operator=(const CBox& other);
全部回答
- 1楼网友:天凉才是好个秋
- 2021-02-24 07:53
会发生调用CBox(double side) :m_Length(side), m_Width(side), m_Heigth(side){}
结果是box.m_Length、box.m_Width和box.m_Heigth三个变量都被赋值为99.0
- 2楼网友:青尢
- 2021-02-24 06:51
这个问题我知道!如果单目运算符作为为类的成员函数重载时只有一个参数,但是这个参数系统会自动添加成this指针,而这个this指针是不用我们程序员写的,所以也可以说成没参数。this指针就是指向当前的类的对象,例如我定义了time这样的一个类,定义一个对象time1即timetime1,然后调用++time1那么不需要任何参数,因为this指针默认调用当前的对象time1的++函数。还需要注意的一点事,“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符,但是我们写重载函数的时候要,要让系统明确调用是前置自增运算符还是后置自增运算符,所以在后置运算符加多了一个(int)的参数,这个参数只是让系统区别前置自增运算符还是后置自增运算符,没有传递参数的作用。例如:time是一个类,前置自增运算符timeoperator++();后置自增运算符
timeoperator++(int);
- 3楼网友:罪歌
- 2021-02-24 05:20
书上解释得已经很清楚了:
CBox(dobule side)是转换构造函数,将99.0赋给CBox类的对象 box,99.0是个浮点数,与上述转换构造函数相匹配,所以会调用它进行隐式类型转换。
转换的结果是,该对象box所描述的立方体的长宽高均被初始化为99.0。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯