C++_避免呼叫複製建構函式
阿新 • • 發佈:2019-02-04
Tips: 軟體工程知識
可以阻止類的一個物件賦值給另一個物件,只要把賦值運算子宣告為這個類的private成員即可達到此目的。
可以阻止物件的複製,要達到此目的,只需把這個類過載的賦值運算子和複製建構函式宣告為private。
1.
#include <cstdio> #include <iostream> using namespace std; class A{ public: A(int b) :a(b){ } private: A(const A &b){ a = b.a; } private: int a; }; int main(){ A d(4); A b = d; return 0; }
會報錯,錯誤提示如下:
#include <cstdio>
#include <iostream>
using namespace std;
class A{
public:
A(int b) :a(b){
}
private:
A(const A &b){
a = b.a;
}
private:
int a;
};
int main(){
A d(4);
A b(d);
return 0;
}
會報錯,錯誤提示如下:
1.2 證明了在一個類的例項在定義的時候使用格式:
Timer a;
Timer a(b); / Timer a = b;
呼叫的都為複製建構函式。