成员
常成员、常对象(C++推荐使用 const 而不用#define,mutable)
const 数据成员只在某个对象生存周期内是常量,而对于整个类而言却是可变的(static除外)
1.常数据成员(构造函数初始化表赋值)
class STU{
public:
A():x(100){
}
const int x;
}
2.常成员函数
void func() const;
3.常对象
const STU a;
静态成员(属于类不属于对象)
1.静态成员的声明
static int x;
static const int x = 10;
2.静态数据成员初始化
static int STU::x = 10;//类之外的初始化
3.静态成员函数
static void func();//能访问静态成员
//调用方法
STU::func();
例(常成员、常对象)
#include <stdio.h>
class STU{
public:
STU(int data = 0):b(data){ //默认参数 = 0 b = data;
printf("STU\n");
}
~STU(){
printf("STU Bye!!!\n");
}
void class_print(void) const{
printf("b = %d\n", b);
}
private:
int a;
const int b;
};
int main(int argc, char const *argv[])
{
STU x(10);
x.class_print();
STU y(100);
y.class_print();
STU z;
z.class_print();
return 0;
}
例(静态)
基于类不基于对象
#include <stdio.h>
class STU{
public:
void func1(){
printf("func1\n");
}
static void func2(){ //无需创建对象也可以调用
printf("func2\n");
}
static int data;
};
int STU::data = 0;//一定类外初始化
int main(int argc, char const *argv[])
{
STU a;
a.func1();
a.func2();
//STU::func1();//不能调用,因为不依附于对象,无static
STU::func2();
printf("data = %d\n", a.data);
STU::data = 1000;
printf("data = %d\n", a.data);//静态成员也可以改变
return 0;
}