频道栏目
首页 > 资讯 > C++ > 正文

C++构造函数中遇到的问题

16-11-29        来源:[db:作者]  
收藏   我要投稿
对于构造函数初始化,分为有参数构造函数初始化和无参数构造函数初始化。

1、无参数构造函数初始化
SubBase obj1;这里对象obj1无参数带入,但是构造函数需要初始化,这时只能先在SubBase类中调用无参数构造函数 SubBase(){z=0;},然后在调用父类中无参数构造函数 Base();Base::Base(){x=0;y=0;}这样x,y,z分别都被初始化为x=0,y=0,z=0.下面调用obj1.display();时就会份别输出x=0,y=0,z=0
调用无参数SubBase obj1;构造函数初始化顺序如下:

SubBase(){z=0;}
Base();
Base::Base(){x=0;y=0;}

2、有参数构造函数初始化

SubBase obj2(1,2,3);这里对象obj2(1,2,3)为有参数带入。构造函数初始化 SubBase(int m,int n,int l);
SubBase::SubBase(int m,int n,int l):Base(m,n),z(l){}
Base::Base(int m,int n):x(m),y(n){}
这里初始化为x=m,y=n
SubBase::SubBase(int m,int n,int l):Base(m,n),z(l){}

初始化x,y之后,再执行z(l),z(l)就等于z=l
执行完上面几条语句之后,带参数对象的构造函数初始化可以得到

x=m,y=n,z=l

后面执行obj2.display();
可以打印出x=1,y=2,z=3
总结:(1)对于上面函数z(l)就等价于z=l,x(m)等价于x=m,y(n)等价于y=n。
(2)对于有参数构造函数的初始化

SubBase::SubBase(int m,int n,int l):Base(m,n),z(l){}

父类中已有的两个参数x,y可以通过调用父类的带参数构造函数进行初始化,对于z,需要在这里单独进行初始化。
源代码:

#include
using namespace std;
class Base{
int x;
protected:
int y;
public:
Base();
Base(int m,int n);
void set(int m,int n);
int getX();
int getY();
void display();
};
Base::Base(){x=0;y=0;}
Base::Base(int m,int n):x(m),y(n){}
void Base::set(int m,int n)
{
x=m;
y=n;
}
int Base::getX(){return x;}
int Base::getY(){return y;}
void Base::display()
{
cout<<”x=”<
相关TAG标签
上一篇:ASP.NET中的页面跳转和页面之间的信息传递方法介绍
下一篇:Oracle重复数据相关
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站