編譯器可以隱式地爲我們定義需要的一些函數,以及它們是否可以爲該類正確定義。像編譯器生成的拷貝構造函數/賦值是否使用const/volatile描述它的參數
- 默認構造函數
- 拷貝構造函數
- 賦值運算符
- 析構函數。
因此,編譯器生成的拷貝構造函數/賦值是否將它的參數設爲const-reference
或non-const-reference
。
class Test
{
public:
Test(const Test&); << _1
Test(Test&); << _2
};
如果確實如此,那麼決定的指導因素是什麼。
隱式定義的複製構造函數[here](http://en.cppreference.com/w/cpp/language/copy_constructor)的規則可能會有所幫助。根據鏈接,根據類的父母的拷貝構造函數,可以是「const Test」或「Test&'。 – Pradhan