1. 程式人生 > >Effective C++之構造,拷貝函式

Effective C++之構造,拷貝函式

3.條款之不使用預設生成的函式,應該明確拒絕 我們知道C++類會幫我們自動生成建構函式,解構函式函式,拷貝建構函式,和賦值函式 #include <iostream> using namespace std;

class homeclass{};

int main(int argc,char *argv[]) {         homeclass h1,h2;     homeclass h3(h1);     h1 = h2;

    return 0; } 以下程式碼是可以通過,也符合C++準則,但是當我們不使用這些函式的時候 方法1.可以把他們宣告為私有函式: class homeclass{ public:

private:     homeclass(const homclass&);     homeclass & operator=(const homeclass&); }; 此處不加引數名,是因為我們本來就不想讓他們實現,加引數名無意義 方法2.方法1雖然這樣做,但是不足夠安全,因為在member函式或frind函式還是可以呼叫我們的私有函式 class uncopy{ protected:     uncopy();     ~uncopy(); private:    uncopy(const uncopy&)    uncopy & operator=(const uncopy&); };

class homeclass:private uncopy{

};

此規則:為了駁回編譯器自動生成的機能,可對成員函式宣告為private不予實現。使用像uncpoy這樣的base class也是一種做法。