1. 程式人生 > >若不想使用編譯器自動生成的函式,就應該明確拒絕

若不想使用編譯器自動生成的函式,就應該明確拒絕

明確拒絕的方法:

1、copy建構函式和copy assignment函式宣告為private

2、上面的方法不是一個完全方案:因為類的members成員函式和friends函式還可以訪問。一點改進就是指宣告而不定義他們,這樣有地方使用它們的時候,就會產生連線告警。

3、宣告一個baseclass,並且將其copy建構函式和copy assignment操作符指定為private。但是這種方法會增加繼承層數。我不是很認同。

注意:

為駁回編譯器自動(暗自)提供的功能,可以將相應的成員函式宣告為private,並且不予實現。使用像Uncopyable這樣的baseclass也是一種方法。