社区
C++ 语言
帖子详情
c++ primer中的合成默认构造函数
caddor2011
2011-09-27 08:22:25
1.什么是合成的默认构造函数?
2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型,
c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈,
该怎么理解这段话?
...全文
95
9
打赏
收藏
c++ primer中的合成默认构造函数
1.什么是合成的默认构造函数? 2. 如果一个类包含了数组, 指针,成员对象等复杂的 类型, c++ primer中提到;对于全局对象,那么 可以别初始化的, 如果不是全局对象,不会被初始哈, 该怎么理解这段话?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
中
文版(第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
》学习笔记(24)类
- **
默认构造函数
的作用**:
默认构造函数
在多种情况下会被自动调用,例如在未初始化的非静态局部变量、类
中
合成
的
默认构造函数
成员等场合。此外,当没有提供完整的数组初始化时,
默认构造函数
也会被调用。 - **隐式...
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
Primer
类的总结
默认构造函数
通常应被定义,特别是当类
中
包含必须在初始化列表
中
完成初始化的成员时。构造函数通过指定成员初始化列表来初始化成员变量。 复制构造函数用于初始化一个对象为另一个同类对象的副本。如果需要完全禁止...
面向对象程序设计英文教学课件:08-Copy-Control.pptx
默认情况下,
C++
会提供
合成
的(编译器自动生成的)拷贝构造函数和赋值运算符,执行成员级别的赋值,即每个数据成员分别被赋值。这种默认的成员级赋值在处理基本类型的对象时通常足够使用。但当对象含有动态分配的...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章