關於c++的默認拷貝構造函數


copy constructor

《inside the c++ object model》是本非常好的書,特別是幫助對類的構造和析構的理解。

下面我要是的一個就是關於c++默認的拷貝構造函數;一般我們用到它在以下情況

// class A {...};
A aa; // default ctor
A a = aa; // copy ctor

//
void func(A a) { // TODO }
func(a) // copy ctor
    
A f() { return A(); }
f(); // copy ctor
    
// 以下是我遇到與下面相似問題時的產生的這個思考
class B : public A {
  B(const A &a) A(a) {...}  // A沒有explicit copy constructor
  // TODO
};

​ 當我沒在A中定義自己的copy constructor,便會使用類自動生成的默認copy constructor,那么默認生成的這個函數行為是什么呢?

​ 其實這里有個default memberwise initialization的東西,就是把每一個data member的值拷貝過去,(貌似遇到指針,會出現淺拷貝的情況)但是他不會拷貝其中的 member class object, 而是以遞歸的方式實施 memberwise initialization。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM