对于家庭作业,当主类在同一行上实例化同一类的两个对象时,我很难理解行为,如下所示。请注意,赋值的对象是类的行为类似于int:
main () {
MyClass x,y = 5;
cout << "x = " << x << endl; // outputs x = 0...why not 5???
cout << "y = " << y << endl; // outputs y = 5
}
和这里的头文件类定义:
class MyClass {
public:
MyClass(int initValue = 0); //constructor
operator int() {return myValue}; //conversion operator to int
private:
int myValue;
}
最后,我的源文件:
#include "MyClass.h"
MyClass::MyClass(int initValue) {
myValue = initValue;
}
为什么x不像y那样用值5初始化?
答案 0 :(得分:7)
问题是C ++正在解析
MyClass x,y = 5;
好像你写过
MyClass x;
MyClass y = 5;
所以x
正在进行默认初始化而不是用5初始化。要解决此问题,请将行更改为读取
MyClass x = 5, y = 5;