1. 程式人生 > >C++_避免呼叫複製建構函式

C++_避免呼叫複製建構函式

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;
}
會報錯,錯誤提示如下:


2.
#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;

呼叫的都為複製建構函式。