Given:Intercept C++ ngầm constructor sao chép, hoặc gọi chức năng của nó
class Foo {
private:
static int cntFoos;
//... stuff...
public:
Foo() { cntFoos++; }
~Foo() { cntFoos--; }
};
... nơi "công cụ" có thể bất kỳ tập hợp tài sản. (Ý tưởng là để có một bộ đếm của trường của lớp đó)
Sau đó:
Foo aFoo;
Foo twoFoo=aFoo;
sẽ gọi constructor sao chép tự động, và do đó em lại nhớ đếm thế này.
Có cách nào để giữ bộ đếm phản ánh các phiên bản mới được tạo tự động không? Nếu tôi thực hiện hàm tạo bản sao rõ ràng, tôi sẽ phải gán tất cả các thuộc tính một. Tuy nhiên, tôi muốn bản sao nông, thành viên. Tôi không cần phải thực hiện một bản sao sâu, do đó, nó có vẻ như rất nhiều công việc không cần thiết để thực hiện một nhà xây dựng bản sao rõ ràng.
Tương tự như xử lý một con trỏ (nhưng chỉ cần đếm, ở đây). Tra cứu quy tắc ba (năm C++ 11) –
Quá tải hàm tạo bản sao. – user2970916