1.可以将一个类声明为一个字面值常量类,这样这个类就是一个字面值类型。但是声明这样的类要求比较多,用得也比较少,需要的时候自己网上查阅。
2.可以使用static关键字定义将类的成员变量和函数定义为静态的。静态成员与类直接相关而不是与每个类的对象相关联。
静态成员变量:
(1)类的静态成员变量不在类内进行初始化(有很少的特例是可以的,可以忽略)。
(2)对类内的静态变量初始化赋值的方式:
struct Person{
string Name;
static int Age;
}
int Person::Age = 10;//使用::获取类的静态变量赋值,注意这个赋值语句要放在全局,不能在main函数体或者其他函数体中使用。
(3)类的静态成员变量也可以使用public和private修饰
访问静态成员变量的时候如果是public的则可以使用Person::Age的方式,也可以使用对象:Person p;p.Age;。如果是private的则前面两种访问的方式都不可行,只能在类的成员函数中使用。
即使用Person实例化了多个不同的对象,但是他们访问到的静态成员变量都是同一个。
(4)普通成员函数和静态成员函数都可以直接访问到该类的静态成员变量
静态成员函数:
(1)对类内的静态函数初始化的方式,可以在类内初始化也可以在类外初始化,在类外初始化的时候不需要再加上static关键字
struct Person{
string Name;
static int Age;
ststic int getAge(){
return Age;
}
static int getAge1();
}
int Person::getAge1(){
return Age;
}
(2)静态成员函数中只能访问该类中的静态成员变量和静态成员函数,不能使用this,访问不到普通成员
(3)静态成员函数也可以声明为private的,声明为private后就只有类中的静态成员函数可以访问
(4)使用静态成员函数的时候,可以使用Person::getAge()调用,也可以使用对象:Person p;p.getAge()调用
原文:https://www.cnblogs.com/maycpou/p/14512408.html