C++ 初始化与赋值
1、初始化與賦值的區別:
二者的區別不是看,是否有=這個賦值操作符,而是看操作的時候,對象是否已經有值。
初始化:創建對象,并給它設置初始值。
賦值:對象已經有值,擦除對象的當前值,并使用新值代替。
2、初始化分為直接初始化和copy初始化。
直接初始化:直接調用與實參匹配的構造方法。
copy初始化:也叫copy構造,總是調用copy構造方法。copy構造方法就是這樣的,Person(const Person& rhs),也就是根據已有的對象,copy對象的內容,形成一個副本。
3、一方面:定義對象的時候,肯定調用某個構造方法進行了初始化,包括顯示或者隱式。另一方面,對象的初始化必須是在定義的時候進行。這意味著一旦對象定義了,想修改對象,不可能再次初始化對象,只能通過賦值。
4、?Person p1 = p2; 這個語句調用copy構造,為什么??
第一,定義對象p1的時候,肯定要調用一個構造方法,進行初始化,不可能調用賦值操作符;?
第二,賦值的前提是,p1已經有值了,定義p1的時候,p1是沒有值的,只能初始化。
5、 copy構造是一種特殊的構造方法,copy賦值和copy構造雖然做的事情相同,但二者有很大的區別。
copy構造創建一個新的對象,因為是構造方法,沒有返回值。
copy賦值修改內容,并且返回自身的引用,這也是為什么可以連環賦值的原因。p1=p2=p3.
轉載于:https://www.cnblogs.com/nzbbody/p/3407220.html
總結
以上是生活随笔為你收集整理的C++ 初始化与赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软雅黑的问题(for silverli
- 下一篇: C++远航之封装篇——数据的封装