【C++】const+内联+静态成员+友元

const修饰成员函数

在成员函数后面加const,const修饰this指针所指向的对象,保证这个const成员函数的对象在函数内不会被改变。

注意点:

  • const对象对象不可以调用非const成员函数
  • 非const对象可以调用const成员函数
  • const成员函数内不可以调用其他的非const成员函数
  • 非const成员函数内可以调用其他的const成员函数

operator+可以加const,operator+=不可以加const

 

取地址运算符(无意义)

inline内联

以inline修饰的函数叫做内联函数,编译时编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。

  1. 内联函数是以空间换时间的做法,省去调用函数开销,所以代码很长或者有循环/递归的函数不适宜使用内联。
  2. 定义在类内的成员函数默认定义为内联函数。

宏的优点:

  • 减少压栈开销
  • 宏定义的是常量,增强程序的可维护性。

宏的缺点:

  • 没有类型安全检查
  • 不方便调试
  • 很容易写错

尽量用const、enum、inline替换 #define(宏)

友元

友元函数:在C++中友元函数允许在类外访问该类中的成员,就像成员函数一样,友元函数用friend说明。

  1. 友元函数不是类的成员函数
  2. 友元函数可通过对象访问所有成员,私有和保护成员也一样。

class Date
{
	friend void Display(const Date& d);
private:
	int _year;
	int _month;
	int _day;
};
void Display(const Date& d){
	cout << d._year << endl;
	cout << d._month << endl;
	cout << d._day << endl;
}
int main(){
	Date d1;
	Display(d1);
}

友元类:

整个类可以是另一个类的友元,友元类的每个成员函数都是另一个类的友元函数,都可访问另一个类中的保护或私有数据成员。

友元在一定程度上破坏了C++的封装,不易多用。

类的静态成员

静态成员变量

静态成员变量和一般成员变量的初始化不一样。在类中声明,类外定义。

若静态成员变量是私有的,则通过接口间接调用。

静态成员函数

静态成员函数没有隐含this指针,只能访问静态的成员变量。所以可以用类型::作用域访问符直接调用静态成员函数。

计算类的大小,不需要计算静态成员的大小,因为他们不属于类的成员。

静态成员函数不可以访问非静态的成员。

非静态的成员函数可以访问静态成员。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值