构造函数的调用规则
来源:互联网 发布: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;
}
- 构造函数的调用规则
- 构造函数的调用规则
- 构造函数调用规则研究
- C++构造函数调用规则
- 多继承中虚基类构造函数的一种调用规则
- c++ 构造函数 继承 调用规则
- C++之 构造函数调用规则
- 构造函数的调用
- 构造函数的调用
- 构造函数的调用
- 构造函数的调用
- 黑马程序员----关于构造函数与的学习以及this指针在构造函数间的调用规则
- 继承条件下构造方法的调用规则
- 继承条件下构造方法的调用规则
- c++构造函数和析构函数调用规则
- 子类对象初始化过程中构造函数调用的若干规则
- 子类对象初始化过程中构造函数调用的若干规则
- X64的函数调用规则
- 8.2 数据结构
- easyui文件的上传和下载,从页面到后台
- RMQ ST算法模板
- 廖雪峰《python3 基础教程》读书笔记——第五章
- Java中的向上转型和向下转型
- 构造函数的调用规则
- JavaScript 中的闭包
- poi导入excel
- 安全防护工具之:ClamAV
- Silver Cow Party
- servlet和jsp写一个图片验证码
- 透明度,margin为负数的应用,圣杯布局,倒三角
- Android部分手机拍照上传返回为空处理,和拍照后图片压缩后保存到指定路径下
- poi导出excel