很奇怪的题,什么叫做data member definition

superspring 2009-11-23 03:58:12


class A{
private: int a; // One
public:
A(int a=0): // two
wheels(wheels){} // three
int getA(){
return a;
}
};

A aaa; // four

问题是,上面的one, two, three, four 中,哪一个代表的是 data member definition
...全文
104 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
forster 2009-11-24
  • 打赏
  • 举报
回复
这个问题是谁问你的?
让他问编译器
benbshmily 2009-11-24
  • 打赏
  • 举报
回复
在构造对象的时候,成员变量才真正的定义。类里面全是声明。当然除静态的,静态的再初始化的时候定义。
herman~~ 2009-11-24
  • 打赏
  • 举报
回复
one吧,只有他是成员变量
eyodo8 2009-11-24
  • 打赏
  • 举报
回复
A(int a=0): // two wheels(wheels){}
A的构造函数这里并不是对成员变量a进行赋值,此a非彼a。
wheels(wheels){}这里的wheels确实很诡异,这个是A对象的成员变量么。如果是a的话还可以理解
jackyjkchen 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 superspring 的回复:]
引用 5 楼 jackyjkchen 的回复:
引用 4 楼 superspring 的回复:
引用 3 楼 jackyjkchen 的回复:
wheels(wheels){} // three
这是什么东西,很诡异的说,我理解你的意思了,找private: int a;赋值的地方


C/C++ code

A(int a=0): wheels(wheels){}
\\这个是构造函数和初始化列表啊,只是分开写为了标明 two 和 three

知道是初始化列表,问题是wheels的含义。整个类里看不出a在哪里有赋值,也就是这个地方可疑,如果这个初始化列表能初始成员a,那么答案就是four,只有在four的时候构造函数才会调用,进行a的实例化

C/C++ code
A(int a1=0): a(a1){}
应该是这样,我刚才搞错了

[/Quote]

那就比较清楚了,语义上,A(int a1=0): a(a1){}是定义的地方,而这句话four去调用……不过,应该选语义上的还是实际调用的,我又有些打鼓了
superspring 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]
引用 4 楼 superspring 的回复:
引用 3 楼 jackyjkchen 的回复:
wheels(wheels){} // three
这是什么东西,很诡异的说,我理解你的意思了,找private: int a;赋值的地方


C/C++ code

A(int a=0): wheels(wheels){}
\\这个是构造函数和初始化列表啊,只是分开写为了标明 two 和 three

知道是初始化列表,问题是wheels的含义。整个类里看不出a在哪里有赋值,也就是这个地方可疑,如果这个初始化列表能初始成员a,那么答案就是four,只有在four的时候构造函数才会调用,进行a的实例化
[/Quote]

A(int a1=0): a(a1){}

应该是这样,我刚才搞错了
jackyjkchen 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 superspring 的回复:]
引用 3 楼 jackyjkchen 的回复:
wheels(wheels){} // three
这是什么东西,很诡异的说,我理解你的意思了,找private: int a;赋值的地方


C/C++ code

A(int a=0): wheels(wheels){}
\\这个是构造函数和初始化列表啊,只是分开写为了标明 two 和 three
[/Quote]
知道是初始化列表,问题是wheels的含义。整个类里看不出a在哪里有赋值,也就是这个地方可疑,如果这个初始化列表能初始成员a,那么答案就是four,只有在four的时候构造函数才会调用,进行a的实例化
superspring 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jackyjkchen 的回复:]
wheels(wheels){} // three
这是什么东西,很诡异的说,我理解你的意思了,找private: int a;赋值的地方
[/Quote]



A(int a=0): wheels(wheels){}
\\这个是构造函数和初始化列表啊,只是分开写为了标明 two 和 three

jackyjkchen 2009-11-23
  • 打赏
  • 举报
回复
wheels(wheels){} // three
这是什么东西,很诡异的说,我理解你的意思了,找private: int a;赋值的地方
superspring 2009-11-23
  • 打赏
  • 举报
回复
one应该算delcaration,而不是definition
jackyjkchen 2009-11-23
  • 打赏
  • 举报
回复
应该是one吧,只有他是成员变量

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧