Chr*_*isM 1 c++ initialization declaration object
对于家庭作业,当主类在同一行上实例化同一类的两个对象时,我很难理解行为,如下所示.请注意,赋值的对象是类的行为类似于int:
main () {
MyClass x,y = 5;
cout << "x = " << x << endl; // outputs x = 0...why not 5???
cout << "y = " << y << endl; // outputs y = 5
}
Run Code Online (Sandbox Code Playgroud)
这里是头文件类定义:
class MyClass {
public:
MyClass(int initValue = 0); //constructor
operator int() {return myValue}; //conversion operator to int
private:
int myValue;
}
Run Code Online (Sandbox Code Playgroud)
最后,我的源文件:
#include "MyClass.h"
MyClass::MyClass(int initValue) {
myValue = initValue;
}
Run Code Online (Sandbox Code Playgroud)
为什么不像y那样用x值初始化x?
问题是C++正在解析
MyClass x,y = 5;
Run Code Online (Sandbox Code Playgroud)
好像你写过
MyClass x;
MyClass y = 5;
Run Code Online (Sandbox Code Playgroud)
因此x,默认初始化而不是用5初始化.要解决此问题,请将行更改为读取
MyClass x = 5, y = 5;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4044 次 |
| 最近记录: |