C++类成员
一、内联函数(Inline Functions)
-  作用 
 解决频繁调用小函数时的栈内存消耗问题,通过将函数代码直接插入调用点,避免压栈/出栈开销。
-  定义形式 inline 返回类型 函数名(参数列表) { ... }• 隐式声明:类内直接定义的成员函数默认内联(需函数体简单)。 • 显式声明:类外定义时使用 inline关键字。
-  限制条件 
 • 函数体不能包含复杂结构(如循环、分支、递归)。• 编译器可能忽略复杂函数的 inline请求。
-  适用场景 
 适用于短小且频繁调用的函数(如getter/setter)。
二、this指针
-  作用 
 指向当前对象实例,隐式传递给成员函数,用于区分参数与成员变量名冲突。
-  示例 class A {int x, y; public:A(int x, int y) {this->x = x; // 使用this区分成员变量this->y = y;} };
-  特点 
 • 类型为类名* const(常量指针)。• 成员函数中访问成员变量时默认隐含 this->。
三、静态成员(Static Members)
-  静态数据成员 
 • 定义:类内声明,类外初始化(必须一次)。class SavingsAccount {static float currentRate; // 类内声明 }; float SavingsAccount::currentRate = 0.02; // 类外初始化• 特性:所有对象共享同一内存,属于类而非对象。 
-  静态成员函数 
 • 定义:使用static修饰,无this指针,只能访问静态成员。static void updateRate(float r) { currentRate = r; }• 调用方式:通过类名直接调用。 SavingsAccount::updateRate(0.03);
-  应用场景 
 共享数据(如利率、计数器)或工具函数。
四、友元(Friend)
-  友元函数 
 • 作用:允许非成员函数访问类的私有成员。• 声明:类内用 friend修饰,定义在类外。class A {friend void printA(const A& a); // 友元函数声明 }; void printA(const A& a) { ... } // 可直接访问A的私有成员
-  友元类 
 • 声明:友元类的所有成员函数可访问当前类的私有成员。class B { friend class C; };
-  注意事项 
 • 破坏封装性,需谨慎使用。• 关系单向、不可传递、不可继承。 
五、const成员函数
-  定义 
 在函数参数列表后加const,表示不修改对象状态。class A {int x; public:int getX() const { return x; } // 常成员函数 };
-  特性 
 • 不能修改成员变量,不能调用非const成员函数。• 常对象( const A a;)只能调用const成员函数。
-  应用场景 
 保证对象状态不变的接口(如getter方法)。
六、问题解决示例
-  构造函数参数冲突 
 使用this->x = x避免同名参数覆盖成员变量。
-  静态成员共享数据 
 如银行账户类中,用static float currentRate实现所有账户共享利率。
-  友元访问私有成员 
 通过友元函数或友元类直接操作私有数据(需权衡封装性)。
总结
 • 内联函数优化性能,但需谨慎使用。
• this指针解决成员变量与参数同名问题。
• 静态成员实现数据共享,类外初始化是关键。
• 友元提供跨类访问权限,但破坏封装性。
• const成员函数确保对象状态安全,是常对象的唯一接口。
通过合理使用这些特性,可以提升代码效率和设计灵活性,同时需注意维护良好的封装性。
