C ++在同一行上声明多个对象实例的问题

时间:2011-03-06 00:26:36

标签: c++ object initialization declaration

对于家庭作业,当主类在同一行上实例化同一类的两个对象时,我很难理解行为,如下所示。请注意,赋值的对象是类的行为类似于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初始化?

1 个答案:

答案 0 :(得分:7)

问题是C ++正在解析

MyClass x,y = 5;

好像你写过

MyClass x;
MyClass y = 5;

所以x正在进行默认初始化而不是用5初始化。要解决此问题,请将行更改为读取

MyClass x = 5, y = 5;