![](/img/trans.png)
[英]calling default (implicit) copy constructor from the defined copy constructor
[英]Calling constructor from copy constructor
從c ++ 11開始,我們可以從另一個構造函數調用一個構造函數。 因此,除了定義副本構造函數之外,我們還可以每次調用該構造函數嗎? 就像這段代碼一樣:
class MyString
{
private:
char *ptr;
int m_length;
public:
MyString(const char *parm = nullptr) : m_length(0), ptr(nullptr)
{
if (parm)
{
m_length = strlen(parm) + 1;
ptr = new char[m_length];
memcpy(ptr, parm, m_length);
}
}
MyString(const MyString &parm) : MyString(parm.ptr)
{
}
};
這種方法有什么不良影響嗎? 編寫傳統的復制構造函數有什么好處?
因此,除了定義副本構造函數之外,我們還可以每次調用該構造函數嗎?
是的你可以
委托構造函數的優點之一是通過在某些可能需要全套參數的構造函數中進行通用初始化來避免代碼重復。
編寫傳統的復制構造函數有什么好處?
進行構造委派的能力與定義復制構造函數或任何其他特殊構造函數的需求無關。 如果需要,您需要定義它們。
因此,除了定義副本構造函數之外,我們還可以每次調用該構造函數嗎?
是的你可以。
這種方法有什么不良影響嗎? 編寫傳統的復制構造函數有什么好處?
在行為方面,您的方法不會帶來任何不良影響。 有了成員變量,IMO最適合您的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.