社区
C++ 语言
帖子详情
c++ primer中的合成默认构造函数
caddor2011
2011-09-27 08:22:25
1.什么是合成的默认构造函数?
2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型,
c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈,
该怎么理解这段话?
...全文
93
9
打赏
收藏
c++ primer中的合成默认构造函数
1.什么是合成的默认构造函数? 2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型, c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈, 该怎么理解这段话?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DayThinking
2012-03-25
打赏
举报
回复
关于这个问题,你得注意默认构造函数并不是一定会生成的。一个类满足下列其中任何一个条件才会有默认的构造函数:
1.包含了一个类的对象,这个对象有一个构造函数(包括编译器合成的默认构造函数)
(在class A中增加一个string str即可)
2.如果继承自一些基类,其中某些基类有一个构造函数(包括编译器合成的默认构造函数)
(在class A中增加一个构造函数,B中就会自动生成默认构造函数)
3.有一个虚函数,或者继承到了虚函数
4.有虚基类
如果一个类不满足上面的4个条件,并且没有提供构造函数,编译器也不会为这个类提供默认的拷贝构造函数。
阿尔博特
2011-09-27
打赏
举报
回复
建议lz在看primer的时候不要一有问题就到csdn,我也在看primer,大多数都能看懂,看不懂的慢慢啃,多读几遍,琢磨几遍,实在不会了打个问号,或许看后面的或看其它的一些材料的时候你就会突然明白,实在不会那就csdn。学编程本来就是多动手,多思考的事。
个人看法。
阿尔博特
2011-09-27
打赏
举报
回复
[Quote=引用 2 楼 jake443403168 的回复:]
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的默认构造函数
2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型,
这样的情况必须重载构造函数,如果不重载,。无法完成初始化
c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈,
对于没有2写的数据类型,等类型 的全局对象即外部变量,对……
[/Quote]
这位兄台说的很对
caddor2011
2011-09-27
打赏
举报
回复
int i;
int main()
{
// A a(cin);
// A a;
//cout<<a;
cout<<i;
return 0;
}
原来 对于对象也是这样理解 ,
一直以为只是 内置类型是这样理解
[Quote=引用 5 楼 jake443403168 的回复:]
引用 3 楼 caddor2011 的回复:
何谓全局?
mfc 中的全局 估计也就theApp了。
其他都是局部对象。。。
照c++ primer的说法, 一个函数体里面的对象, 内置类型都不会被初始化了
引用 2 楼 jake443403168 的回复:
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的……
[/Quote]
Jake443403168
2011-09-27
打赏
举报
回复
[Quote=引用 3 楼 caddor2011 的回复:]
何谓全局?
mfc 中的全局 估计也就theApp了。
其他都是局部对象。。。
照c++ primer的说法, 一个函数体里面的对象, 内置类型都不会被初始化了
引用 2 楼 jake443403168 的回复:
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的默认构造函数
2. 如果一个类包含了数组……
[/Quote]
一个函数体里面的对象就是内部变量,内部变量是不会初始化的,你在main里面写个int i;
看i有没有被初始化
caddor2011
2011-09-27
打赏
举报
回复
为此
无论 有无复合型的成员数据,都应该提供一个构造函数进行初始化
[Quote=引用 3 楼 caddor2011 的回复:]
何谓全局?
mfc 中的全局 估计也就theApp了。
其他都是局部对象。。。
照c++ primer的说法, 一个函数体里面的对象, 内置类型都不会被初始化了
引用 2 楼 jake443403168 的回复:
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的默认构造函数
2. 如果一个类包含了数组……
[/Quote]
caddor2011
2011-09-27
打赏
举报
回复
何谓全局?
mfc 中的全局 估计也就theApp了。
其他都是局部对象。。。
照c++ primer的说法, 一个函数体里面的对象, 内置类型都不会被初始化了
[Quote=引用 2 楼 jake443403168 的回复:]
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的默认构造函数
2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型,
这样的情况必须重载构造函数,如果不重载,。无法完成初始化
c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈,
对于没有2写的数据类型,等类型 的全局对象即外部变量……
[/Quote]
Jake443403168
2011-09-27
打赏
举报
回复
1.什么是合成的默认构造函数?
由编译器自动生成的构造函数为合成的的默认构造函数
2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型,
这样的情况必须重载构造函数,如果不重载,。无法完成初始化
c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈,
对于没有2写的数据类型,等类型 的全局对象即外部变量,对象里面普通成员变量会自动赋0
caddor2011
2011-09-27
打赏
举报
回复
up up
C++
Primer
第四版【
中
文高清扫描版】.pdf
12.4.3
默认构造函数
392 12.4.4 隐式类类型转换 393 12.4.5 类成员的显式初始化 396 12.5 友元 396 12.6 static类成员 398 12.6.1 static成员函数 400 12.6.2 static数据成员 400 小结 403 术语 403 第13章 复制...
C++
Primer
中
文版(第5版)李普曼 等著 pdf 1/3
7.5.3
默认构造函数
的作用 262 7.5.4 隐式的类类型转换 263 7.5.5 聚合类 266 7.5.6 字面值常量类 267 7.6 类的静态成员 268 小结 273 术语表 273 第Ⅱ部
C++
标准库 275 第8章 IO库 277 8.1 IO...
C++
Primer
(第5版 )
中
文版(美)李普曼等著.part2.rar
7.5.3
默认构造函数
的作用 262 7.5.4 隐式的类类型转换 263 7.5.5 聚合类 266 7.5.6 字面值常量类 267 7.6 类的静态成员 268 小结 273 术语表 273 第Ⅱ部
C++
标准库 275 第8章 IO库 277 8.1 IO...
关于
C++
合成
的
默认构造函数
对于
C++
默认构造函数
,我曾经有两点误解: 类如果没有定义任何的构造函数,那么...
合成
默认构造函数
会初始化类
中
所有的数据成员。 第一个误解来自于我学习
C++
的第一本书 《
C++
Primer
》,在书
中
392页:“只有当
C++
合成
默认构造函数
的真相
合成
默认构造函数
会初始化类
中
所有的数据成员。 第一个误解来自于我学习
C++
的第一本书 《
C++
Primer
》,在书
中
392页:“只有当一个类没有定义构造函数时,编译器才会自动生成一个
默认构造函数
”。 实际上这...
C++ 语言
64,281
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章