const 常成员函数
常数据成员
Something (int vlaue) : m_value(value) {
}
- 必须使用初始式初始化
- 初始化后不可修改
常成员函数
void fun() const;
void Something :: fun() const{
}
const在函数头外
常成员函数不能修改数据成员
void Something :: fun(const Smonething * const this)
const在this前
将this变为指向常量的常指针
常对象
- 不能修改常对象的公开成员的数据
- 只能调用常成员函数(公开的)
const T_class t1(1,2)
通过构造函数初始化
t1.a=7; //非法
t2.b=6; //非法
static 静态成员
- 为同类对象共享
- 静态成员函数与静态数据成员协同操作
- 以static声明
- sizeof 运算符不会作用于静态成员
静态数据成员
class A{
public:
static int count; //用来统计构造函数被调用的次数
A(){count++;}
int showcount(){
return count;
};
};
int A::count=0; //必须在类外初始化
- 私有静态成员也必须在类外初始化
- 访问方法
- 使用对象访问
- 使用时加类名
静态成员函数
static int getvalue(something & b){
b.m_x = 10;
return s_value;
}
- 只能访问静态成员
- 可以通过参数将对象传入
- 不能调用非静态成员函数
- 本质:编译器不为静态成员函数添加this指针
class a{
public:
static void fun(int i,x *ptr);
int dat;
};
void a::fun(int i,x * ptr){
dat=i; // 错误!!!
ptr->dat=i; // 正确!!!
}
友元
- friend 修饰
- 能够访问类的私有成员的全局函数
- 提高运行效率
友元函数
- 一个类的友元函数可以访问该类的私有成员
![[Pasted image 20231226163459.png]]![[Pasted image 20231226163543.png]]
友元类
- A时B的友元类,A的成员函数可以访问B的私有成员
特性
- 非对称
- 非传递
调用
- 通过类成员调用
- 通过对象参数访问
![[6.3 其他成员函数和友元.pdf]]
标签:友元,const,函数,int,成员,静态,其他 From: https://www.cnblogs.com/AndyYX/p/18143285