社区
C++ 语言
帖子详情
类成员数据的赋值与初始化的区别
JaneThink
2008-11-05 10:15:11
如题:对这两者之间的区别不是很明白,C++primer中只是说“没有清楚地认识到这个区别是程序错误和低效的常见源泉 !”说的好像是很严重,但是有没有见到它具体说它们之间的区别。希望高手能给具体的指导,谢谢了!
...全文
170
9
打赏
收藏
类成员数据的赋值与初始化的区别
如题:对这两者之间的区别不是很明白,C++primer中只是说“没有清楚地认识到这个区别是程序错误和低效的常见源泉 !”说的好像是很严重,但是有没有见到它具体说它们之间的区别。希望高手能给具体的指导,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
toadzw
2008-11-14
打赏
举报
回复
类成员列表中的那才叫初始化,而在函数体中的则就初始化
peter1_jiang
2008-11-13
打赏
举报
回复
c++作者也强调了初始化要比赋值的效率更高。初始化是对一个对象进行显示的初始化,而赋值是一个“隐式”的初始化,即赋值符号的左边的对象必须是已经初始化了的对象,才能进行赋值
jackzhhuang
2008-11-05
打赏
举报
回复
应该是两步:
1,初始化
2,赋值
如果用初始化列表效率会高点,因为少了赋值。
OenAuth.Core
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.Core
2008-11-05
打赏
举报
回复
在写程序的过程中其实很容易分清。你只要知道规律
初始化时肯定有类型在前面如 int a=10; 类A a=**这些都是初始化,而不是赋值。
赋值前没有类型,如a=10;
至于两者在效率等方面,LS已经说的差不多了
xhs_lh04
2008-11-05
打赏
举报
回复
因为如果赋值语句可能会调用两次该成员的构造函数,而初始化只会调用一次,一般而言,重复的函数调用是浪费资源的,尤其是当构造函数和赋值操作符分配内存的时候。在一些大的类里面,你可能拥有一个构造函数和一个赋值操作符都要调用同一个负责分配大量内存空间的Init函数。在这种情况下,你必须使用初始化列表,以避免不要的分配两次内存。
xhs_lh04
2008-11-05
打赏
举报
回复
因为初始化比赋值效率高
成员
初始化
列表与构造函数体中的
区别
详细解析
请问这里的
初始化
数据
成员
与对
数据
成员
赋值
的含义是什么?有什么
区别
? 我知道在
数据
成员
有默认构造函数时是有不同的,但对其他
类
型的
成员
呢?其他
类
型
成员
的
初始化
和
赋值
有
区别
吗?===============================...
c++
类
中对
数据
成员
进行
初始化
和
赋值
的
区别
在构造函数 test(int n_x , int n_y)中 , 我们这样实际上不是对
数据
成员
进行
初始化
, 而是进行
赋值
。 正确的是
初始化
应该是这样的: 虽然大部分时候
赋值
和
初始化
是没有
区别
的 , 但是构造函数的
初始化
值有时必不...
尹成Python27天入门到项目实战
常量变量
数据
类
型 常量与变量
区别
标识符关键字输入输出id求地址type求
类
型python变量是地址
赋值
可以改变
类
型python主要
数据
类
型复数
数据
类
型自适应变长整数intdel作用连续
赋值
交互对称
赋值
字符串转化与输入输出编程...
C++
类
的静态
成员
&
赋值
vs
初始化
C++静态
成员
是
类
的行为而不是对象的行为 C++静态
成员
的用途之一是统计有多少个对象实际...编译器会
区别
这两种情 况,
赋值
的时候调用重载的
赋值
运算符,
初始化
的时候调用拷贝构造函数。如果
类
中没有拷贝构造函数,则编译
初始化
、
赋值
、默认
初始化
、列表
初始化
、
类
内初始值、直接
初始化
与拷贝
初始化
文章目录
初始化
和
赋值
的
区别
列表
初始化
类
数据
成员
初始化
和
赋值
的
区别
初始化
的含义是床关键变量时赋予其一个初始值,而
赋值
的含义时把对象的当前值擦除,而已一个新值来替代。 列表
初始化
C++定义了
初始化
的好几...
C++ 语言
64,636
社区成员
250,540
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章