1.static修饰成员类型
1.类外初始化,初始化时不需要static修饰(不能修饰),要有类名限定
2.静态成员是属于类的,全对象公有
1.class
class MM { public:MM(string name) {size++;a = size;this->name = name;}void print() {cout << "第" << size << "个用户名字为" << name << endl;} private:static int size;int a;string name; };
类外初始化static类型,注意不需要添加static修饰
int MM::size = 0;
2.main
int main() {MM mm1("wangjie");MM mm2("fengjie");mm1.print();mm2.print();return 0; }
结果:
2.static修饰成员函数
1.static使用位置:放在函数前面(const放在函数后面)
static void print(){cout<<"love"<<endl; }
void print()const{cout<<"love"<<endl; }
2.各对象公用函数,直接使用类名也可以使用。
1.class
class MM { public:MM(int age, string name) :age(age), name(name) {}void print() {cout << "普通函数:" << age << name << endl;}static void print(MM mm) {cout << "static函数:" << mm.age << mm.name << endl;} private:int age;string name; };
2.main
int main() {MM mm1(10,"wang");mm1.print();mm1.print(mm1);MM::print(mm1);return 0; }
结果:
3.static修饰对象
静态对象第一个创建,最后一个析构,与代码位置没有关系。