【发布时间】:2012-07-20 00:28:08
【问题描述】:
这是我的示例代码:
#include <iostream>
using namespace std;
class Base
{
public:
Base (int v, char z) {x=v;y=z;};
int x;
char y;
};
class Bar
{
public:
Bar(int m, char n):q(m),s(n),base(q,s){};
Base base;
int q;
char s;
};
int main()
{
Bar barObj(5,'h');
cout << barObj.base.x << barObj.base.y << endl;
return 0;
}
为什么我得到0 的输出?
http://ideone.com/pf47j
另外,一般来说,在另一个类中创建成员对象并调用该对象的构造函数的正确方法是什么,就像上面在 class Bar 内部使用 class Base 的对象基础所做的那样?
【问题讨论】:
-
Base base;不是Base base (int v, char z);。读一本合适的书。 -
您链接中的代码与您上面的代码不同
-
除了Cat Plus Plus所说的,还需要使用
m和n。q和s在构造base之前还没有被初始化。 -
如果你使用gcc,那么尝试用
-Werror -Wall -Wextra -pedantic-errors编译 -
你真的应该发布给出问题的代码,而不是你所拥有的旧版本
标签: c++ class object constructor initializer-list