其他成员与友元

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的私有成员

特性

  1. 非对称
  2. 非传递

调用

  1. 通过类成员调用
  2. 通过对象参数访问

![[6.3 其他成员函数和友元.pdf]]

posted @   study_all_day  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示