3.7.1静态数据成员
能够实现所有对象(注意:是对象共享,不是类共享)共享的数据成员,在类内实现定义,在类外单独初始化,在定义对象前进行,一般放在类的声明后,主函数的前面。
#include"iostream"
using namespace std;
class Student {
private:
string name;
public:
static int count;//在类内定义
Student(string n) {
name = n;
count++;
}
void print() {
cout << count << endl;
}
};
int Student::count = 10; //类外初始化,在Student 类中的静态数据成员
int main() {
Student s1("张三");
s1.print();
Student *s2=new Student("李四");
s2->print();
//也可以通过类名直接访问(属性为public)
cout << Student::count << endl;
//也可以通过对象 或 指针访问(属性为public)
cout << s1.count << s2->count << endl;
}
3.7.2静态成员函数
类内的同名函数不会与其他类中的同名函数发生冲突,
在使用时,不能直接访问类中的非静态成员,只能通过对象的指针(或引用)来访问非静态成员。