请教关于成员变量初始化的问题

zxycbz 2008-03-09 08:54:06
class X{
char A;
int B;
float C;
public:
{
X(int b, char a,float c) : B(b), C(c), A(a){}
X(float c,char a,int b, ) : C(c), B(b), A(a){}
}
};


帮忙说一下,X的两个构造函数中成员ABC初始化顺序分别为什么?

...全文
55 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
koko1998 2008-03-09
  • 打赏
  • 举报
回复
成员被初始化的次序是定义成员的次序。出处c++ primer

星羽 2008-03-09
  • 打赏
  • 举报
回复

vc下成员初始化的顺序是和声明的顺序一致的

你可以这样验证


#include "iostream"
using namespace std;

struct A {
A(int a) {
cout<<"init A"<<endl;
}
};

struct B {
B(int b) {
cout<<"init B"<<endl;
}
};

struct C {
C(int c) {
cout<<"init C"<<endl;
}
};

struct t {
A a;
B b;
C c;

t(int _b, int _c, int _a) : b(_b), c(_c), a(_a) {

}
};

int main() {
t _t(1, 2, 3);
return 0;
}


结果是

init A
init B
init C
请按任意键继续. . .













gccli 2008-03-09
  • 打赏
  • 举报
回复
初始化顺序就是你成员初始化列表的顺序
这样做是没有错误的,但是在用g++ -Wall编译时会有警告产生

像这样做
A(a),B(b),C(c)
就不会有警告了
LZHWWY 2008-03-09
  • 打赏
  • 举报
回复
按照成员变量的声明顺序初始化
koko1998 2008-03-09
  • 打赏
  • 举报
回复
应该按逗号的执行顺序吧?!从左到右
  • 打赏
  • 举报
回复
标准的说法是按照声明顺序
也就是说都是A B C的顺序
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-09 08:54
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下