プログラム内で作成されたオブジェクトの数をカウントするクラスを実装する

クラスの名前が A であるとすると、型 A のオブジェクトはコンストラクターまたはコピー構築を通じて構築する必要があります。その後、コンストラクターとコピー構築で 2 つの静的メンバー変数、++ 変数をそれぞれ定義できるため、毎回次のようになります。作成されたオブジェクトと変数は ++ 1 回なので、当然使いやすいです。次のように:

class A
{
public:
	A()
	{
		++_count1;
	}
	A(const A& aa)
	{
		++_count2;
	}
	static int GetCount1()
	{
		return _count1;
	}
	static int GetCount2()
	{
		return _count2;
	}
private:
	static int _count1;
	static int _count2;
};

int A::_count1 = 0;
int A::_count2 = 0;

A Func(A a)
{
	A copy(a);//1
	return copy;//2
}
int main()
{
	A a1;
	A a2=Func(a1);//3

	cout << a1.GetCount1() << endl;//1
	cout << a2.GetCount2() << endl;//3
	cout << A::GetCount1() + A::GetCount2() << endl;//4
}

ここでグローバル変数 (count1 および count2) を使用することもできますが、お勧めしません。単純なプログラムでは問題なく使用できますが、プロジェクト内でグローバル変数を使用するとリンク競合が発生する可能性があるため、静的メンバー変数を使用することをお勧めします。

おすすめ

転載: blog.csdn.net/m0_49687898/article/details/132047675