构造函数的调用规则

来源:互联网 发布:java web基础知识书籍 编辑:程序博客网 时间:2024/05/16 07:16

规则总结:

1.当类中没有定义任何一个构造函数,c++编译器会提供无参构造函数

2.当类中定义了任意的非拷贝构造函数(无惨,有参),c++编译器不会提供无参构造函数

3.当类中定义了拷贝构造函数时,c++编译器不会提供无参构造函数

4.默认拷贝构造函数成员变量简单赋值

总结:只要你写了构造函数,那么你必须用

#include<iostream>

using namespce std;

class ABCD

{

public:

ABCD(int a,int b,int c)

{

this->a=a;

this->b=b;

this->c=c;

printf("ABCD() construct, a:%d,b:%d,c:%d  \n", this->a, this->b, this->c);

}

~ABCD()

{

printf("~ABCD() construct,a:%d,b:%d,c:%d  \n", this->a, this->b, this->c);

}

int getA()

{

return this->a;

}

protected:

private:

int a;

int b;

int c;



};

class MyE

{

public:

MyE():abcd1(1,2,3),abcd2(4,5,6),m(100)

{

cout<<"MyD()"<<endl;

}

~MyE()

{

cout<<"~MyD()"<<endl;

}

MyE(const MyE & obj):abcd1(7,8,9),abcd2(10,11,12),m(100)

{

printf("MyD(const MyD & obj)\n");

}

 

protected:

//private:

public:

ABCD abcd1; //c++编译器不知道如何构造abc1

ABCD abcd2;

const int m;

 

};

int doThing(MyE mye1)

{

printf("doThing() mye1.abc1.a:%d \n", mye1.abcd1.getA());

return 0;

}

 

int run2()

{

MyE myE;

doThing(myE);

return 0;

}

 

//

int run3()

{

printf("run3 start..\n");

ABCD abcd = ABCD(100, 200, 300);

//若直接调用构造函数哪

//想调用构造函数对abc对象进行再复制,可以吗?

//在构造函数里面调用另外一个构造函数,会有什么结果?

//ABCD(400, 500, 600); //临时对象的生命周期

printf("run3 end\n");

return 0;

}

 

int main()

{

//run2();

run3();

system("pause");

return 0;

}



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 千叶钻戒换款怎么办 车钥匙掉厕所了怎么办 宿舍有个整晚磨牙的室友该怎么办 百度云照片压缩后模糊怎么办 手机点+号无法上传图片怎么办 支付宝账户支付功能关闭怎么办 一件衣服买小了怎么办 交行u盾密码忘了怎么办 老婆婚内出轨丈夫应该怎么办 微信小程序获取用户信息失败怎么办 拼多多砍价没有完成怎么办 微信人数上限了怎么办 微信5000人满了怎么办 微信朋友满了怎么办啊 失业金签到忘签怎么办 gec安全密码忘了怎么办 唯品会微信商城地址错怎么办跨省 电脑突然没网了怎么办 移动光猫只能连一台电脑怎么办 网上银行用户名和密码忘了怎么办 中国银行网银用户名忘了怎么办 中行企业网银证书过期怎么办 腾讯会员被别人登录了怎么办 微信限90天提现转帐功能怎么办? 星巴克券过期了怎么办 京东买面膜发个空包怎么办 手机低于4.4版本怎么办才能恢复 263云通信密码忘了怎么办 有信电话拉黑了怎么办 微信手机充值冲错了怎么办 国通石油卡怎么办红卡 善融商城有假货怎么办 中百购物卡丢了怎么办 cncbk被骗25万该怎么办 中银e贷额度冻结怎么办 招行抵押贷循环额度怎么办 小额钱袋被拒了怎么办 银行需要提供消费贷款发票怎么办 中银e贷款逾期怎么办 按揭房不想要了怎么办 房贷不想还了怎么办