1樓:「已登出」
不考慮效能的情況下
也有以下問題
1.要求這個成員的型別有可訪問的無參建構函式2.要求這個成員的型別有可訪問的賦值函式
很顯然很多態別並不符合這幾點
正確做法:
class
Person
{}Person
(std
::string
&&name):
name
{}public
:void
SetName
(std
::string
const
&name)&
;void
SetName
(std
::string
&&name)&
;std
::string
const
&GetName
()const&;
private
:std
::string
name;};
class
Student
:public
Person
{}Student
(std
::string
&&name
,int
level=0
):Person
(std
::move
(name
)),level
{}private
:int
level;};
2樓:dontbeatmycat
基類子物件,成員物件,引用,const成員必須放到成員初始化列表裡面初始化。
普通int,double這種不是物件,不是引用,非const的東西,放到建構函式體裡面賦值也沒有問題。
3樓:白如冰
初始化和賦值是兩個概念
乙個成員,即使沒有在初始化列表裡初始化,也會呼叫其預設建構函式進行初始化,如果這個物件的類沒有預設建構函式,則會報錯
也就是說,當你在建構函式的函式體裡賦值的時候,成員其實已經預設初始化過了
c 類的建構函式初始化問題??
Right If you don t specify any constructors,the compiler will write one for you that doesn t take any arguments.This compiler generated default constr...
C 中函式return a A類物件 會生成臨時變數,若A類成員指標指向堆記憶體,那堆會拷過去嗎?
我比梅西小一歲 可以把a假設成乙個shared ptr物件,再結合shared ptr的原理就能很好的理解怎麼管理類裡的指標。除此之外還會有Return Value Optimization的情況,這種情況就不會生成臨時物件然後返回的時候拷貝。 Mimosa 這是比較複雜的問題,這個不僅僅要看ret...
c 中乙個只有有參建構函式的類怎麼做為函式的形參?
GarfieldKwong 你編譯錯誤的原因其他答主已經說清楚了,就是DepthFirstSearch裡的成員Graph g導致的。DepthFirstSearch的建構函式沒有顯示初始化Graph g,編譯器預設呼叫Gragh 良好的是類的建構函式裡每個成員變數都要顯示初始化。其實編譯器裡Dept...