C++,继承类的构造函数问题...

firendlys 2010-12-28 10:36:33
C++.


#include "iostream"
using namespace std;

class Per{
public:
Per(int a);
int sum;
};
class Son:public Per{
public:
Son(int a);
};
Per::Per(int a){sum=a;}

main(){
/* 这个 Son 类 和 Per 类的参数是完全一样的.
怎样可以在 定义 Son 类的时候, 由Per 类获取
Son类的构造参数而完成 类的构造??
即, 我下面定义的是 Son s(3)..但在构造的时候,
我想.使用 Per(int a=3) 这个构造函数,
而 Son(int a=3) 这个构造函数将不执行,或者执行的内容为空.

Son 和 Per 的构造函数应该怎样写?
*/
Son s(3);
cout<<s.sum;
}


我不是很会表述,希望能看懂我要问什么..
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
就想叫yoko 2010-12-28
  • 打赏
  • 举报
回复
写外面的时候也把初始化成员列表带上
pengzhixi 2010-12-28
  • 打赏
  • 举报
回复
class Son:public Per{
public:
Son(int a);
int b;
};
Son::Son(int a):Per(a),b(a+1){}
pengzhixi 2010-12-28
  • 打赏
  • 举报
回复
Son::Son(int a){b=a+1;}//你这里写又回到调用基类默认构造函数的时代了.

firendlys 2010-12-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hai040 的回复:]
Son(int a):Per(a){}
google 初始化列表
[/Quote]
再问多一下,如果我的 Son 类,在Per类构造完成之后,还要进行一些初始化.

class Son:public Per{
public:
Son(int a):Per(a){b=a+1;};
int b;
};

这样写没有问题,但,如果我要将函数体写到类外面呢?

class Son:public Per{
public:
Son(int a):Per(a);
int b;
};
Son::Son(int a){b=a+1;}
//这样写会报一大堆错误,应该怎样写呢?

pengzhixi 2010-12-28
  • 打赏
  • 举报
回复
结贴吧!!
無_1024 2010-12-28
  • 打赏
  • 举报
回复

#include "iostream"
using namespace std;

class Per
{
public:
Per(int a);
int sum;
};
class Son:public Per
{
public:
Son(int a):Per(a){};//初始化值列表
};
Per::Per(int a)
{sum=a;}

main(){
/* 这个 Son 类 和 Per 类的参数是完全一样的.
怎样可以在 定义 Son 类的时候, 由Per 类获取
Son类的构造参数而完成 类的构造??
即, 我下面定义的是 Son s(3)..但在构造的时候,
我想.使用 Per(int a=3) 这个构造函数,
而 Son(int a=3) 这个构造函数将不执行,或者执行的内容为空.

Son 和 Per 的构造函数应该怎样写?
*/
Son s(3);
cout<<s.sum;
}


visir 2010-12-28
  • 打赏
  • 举报
回复
Son(int a):Per(a){}

Per::Per(int a):sum(a){}
mstlq 2010-12-28
  • 打赏
  • 举报
回复

#include <iterator>

using namespace std;

class Per
{
public:
Per(int a);
int sum;
};
class Son: public Per
{
public:
Son(int a):Per(a){};
};
Per::Per(int a) {sum = a;}

int main()
{
Son s(3);
cout << s.sum;
return 0;
}
hai040 2010-12-28
  • 打赏
  • 举报
回复
Son(int a):Per(a){}
google 初始化列表

64,637

社区成员

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

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