通过初始化列表调用另一个类的构造函数.有问题

use*_*113 6 c++ constructor class object initializer-list

这是我的示例代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到了输出0http://ideone.com/pf47j

此外,在一般情况下,什么是创造另一个类的成员对象,并调用该对象的构造正确的方法,如上面做用的对象库class Base,里面class Bar

tim*_*rau 7

数据成员的初始化顺序遵循其声明顺序,而不是您列出其初始化程序的顺序.因此,Bar::base总是初始化之前Bar::qBar::s.
正如所示http://ideone.com/M6iKR,对Bar::Bar(int m, char n),初始化base使用mn工作正常.