30/09/2018, 21:43
Vấn đề static trong class C++?
#include <iostream>
using namespace std;
class MyStaticClass{
public:
static int value;
MyStaticClass(){
value++;
}
~MyStaticClass(){}
};
int MyStaticClass::value;
void main(){
MyStaticClass::value = 0;
for (int i = 0; i<9; i++)
MyStaticClass *c = new MyStaticClass();
cout << MyStaticClass::value;
system("pause");
}
Mọi người ơi giải thích giúp em tại sao kết quả lại cho ra 9 vậy ạ. Và khi thay MyStaticClass *c = new MyStaticClass();
thành MyStaticClass c();
thì kết quả lại bằng 0 ạ. Cho em hỏi thêm dòng code int MyStaticClass::value;
có ý nghĩa gì vậy ạ, khi xóa nó thì chương trình báo lỗi. Cảm ơn mọi người.
Bài liên quan
Mỗi khi một instance của class được tạo ra thì constructor được chạy, và value sẽ được cộng thêm 1. Mình đã thử thay thành MyStaticClass c(); và nó vẫn ra là 9.
Khi khao báo một biến static trong class, ta phải gán cho nó một giá trị. Vd
int MyStaticClass::value = 3
. Trong trường hợp không ghi giá trị thì máy sẽ hiểu ngầm là 0.