1.static成員
static成員特性: 它的調用可以不需要對象,它整個類共有的,(所有對象用的都是同一個),不是某一個對象單獨屬性。static 的成員雖然不需要對象就可以調用,但是依然是類的權限限定的
+ static資料成員
+ static 修飾的資料成員,就是靜态資料成員
+ 不能在類中初始化,必須在類外初始化,在類外初始化的時候不再需要static修飾,但是需要類名限定
class MM {
public:
//const成員必須采用初始化參數清單
MM(string name, int age, int id) :name(name), age(age), id(id) { this->money++; }
MM(const MM& obj):name(obj.name),age(obj.age) { cout << "拷貝構造" << endl; };
int getMoney()
{
return money;
}
void print()
{
cout <<"normal\t"<< name << "\t" << age << "\t" << id <<"\t"<<money << endl;
}
//常成員函數,允許屬性不同的同名函數存在,不允許修改資料成員
void print() const
{
//age = 20; 錯誤
cout <<"const\t"<< name << "\t" << age << "\t" << id <<"\t" << money <<endl;
}
void doSomething()
{
}
protected:
//常資料成員
const string name;
const int age;
//普通資料
int id;
//靜态資料成員,不能在類中初始化
static int money;
};
int MM::money = 100;
int main()
{
MM mm("小可愛", 18, 1001);
//普通對象優先調用普通函數
mm.print(); //normal
//常對象隻能調用常成員函數,不能調用普通函數
const MM mm1("小寶貝", 2, 1002);
mm1.print(); //const
MM mm2 = mm1; //指派不會複制const屬性,調用拷貝構造
mm2.print();
return 0;
}