社区
C++ 语言
帖子详情
类成员数据的赋值与初始化的区别
JaneThink
2008-11-05 10:15:11
如题:对这两者之间的区别不是很明白,C++primer中只是说“没有清楚地认识到这个区别是程序错误和低效的常见源泉 !”说的好像是很严重,但是有没有见到它具体说它们之间的区别。希望高手能给具体的指导,谢谢了!
...全文
200
9
打赏
收藏
类成员数据的赋值与初始化的区别
如题:对这两者之间的区别不是很明白,C++primer中只是说“没有清楚地认识到这个区别是程序错误和低效的常见源泉 !”说的好像是很严重,但是有没有见到它具体说它们之间的区别。希望高手能给具体的指导,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
toadzw
2008-11-14
打赏
举报
回复
类成员列表中的那才叫初始化,而在函数体中的则就初始化
peter1_jiang
2008-11-13
打赏
举报
回复
c++作者也强调了初始化要比赋值的效率更高。初始化是对一个对象进行显示的初始化,而赋值是一个“隐式”的初始化,即赋值符号的左边的对象必须是已经初始化了的对象,才能进行赋值
jackzhhuang
2008-11-05
打赏
举报
回复
应该是两步:
1,初始化
2,赋值
如果用初始化列表效率会高点,因为少了赋值。
OenAuth.Net
2008-11-05
打赏
举报
回复
[Quote=引用 4 楼 Nosky100 的回复:]
是不是说初始化就是调用构造函数。
赋值除过调用构造函数之外,还调用了重载的=操作符?
[/Quote]
赋值只调用了重载的=操作符
因为赋值只可能是下面情况
A a;
A b;
a=b;
如果你写成A a=b;那么它就是初始化,就只调用构造函数,其实A a=b;=>A a(b);这两个是一样的。这样你就容易明白了
hznat
2008-11-05
打赏
举报
回复
赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情 况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是 简单地复制类中的每个成员。
Nosky100
2008-11-05
打赏
举报
回复
是不是说初始化就是调用构造函数。
赋值除过调用构造函数之外,还调用了重载的=操作符?
OenAuth.Net
2008-11-05
打赏
举报
回复
在写程序的过程中其实很容易分清。你只要知道规律
初始化时肯定有类型在前面如 int a=10; 类A a=**这些都是初始化,而不是赋值。
赋值前没有类型,如a=10;
至于两者在效率等方面,LS已经说的差不多了
xhs_lh04
2008-11-05
打赏
举报
回复
因为如果赋值语句可能会调用两次该成员的构造函数,而初始化只会调用一次,一般而言,重复的函数调用是浪费资源的,尤其是当构造函数和赋值操作符分配内存的时候。在一些大的类里面,你可能拥有一个构造函数和一个赋值操作符都要调用同一个负责分配大量内存空间的Init函数。在这种情况下,你必须使用初始化列表,以避免不要的分配两次内存。
xhs_lh04
2008-11-05
打赏
举报
回复
因为初始化比赋值效率高
成员
初始化
列表
初始化
同
赋值
的
区别
本文详细解析了C++中构造函数
初始化
与
赋值
的
区别
,包括
初始化
与
赋值
的概念、非
类
数据
成员
的
初始化
与
赋值
、
成员
初始化
列表的使用、
类
成员
初始化
的特殊情况及
类
对象之间的
初始化
过程。
C++
初始化
本文探讨了对象
初始化
的概念,包括
初始化
与
赋值
的
区别
、默认
初始化
的行为,以及
类
成员
数据
的
初始化
方式。特别关注了内置
类
型与
类
类
型在不同场景下的
初始化
表现。
C++:构造函数的
初始化
列表,以及
初始化
的顺序
本文深入解析构造函数
初始化
列表的重要性,特别是在处理const、引用和无默认构造函数的
类
成员
时。文章强调了
初始化
与
赋值
的
区别
,以及使用
初始化
列表提高效率和确保
数据
成员
正确
初始化
的方法。
c++
类
初始化
本文深入探讨了C++中
类
成员
初始化
列表的位置、使用
成员
初始化
表与在构造函数内
赋值
的
区别
,以及内置
类
型
数据
成员
初始化
的注意事项。通过实例分析,展示了正确的
初始化
顺序和避免潜在错误的方法。
C++:公有和私有,const,static
本文介绍了C++中的
类
成员
权限,包括公有和私有
数据
成员
的使用原则。讨论了
初始化
与
赋值
的
区别
,强调了
初始化
列表的重要性。讲解了const
成员
函数的规则,以及何时应将
成员
方法设为const。还阐述了静态
成员
变量的特性,以及如何实现单例模式。单例模式确保
类
只有一个实例,并提供了全局访问点。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章