史上最全的const用法总结

史上最全的const用法总结

缘起

其实const的用法在八股文系列的文章中很常见,但是总是过于零散,总结不是很全面,遂整理成文,以供大家享用,如果有不够全面还请大家补充,万分感谢。

正文

const与变量

使用const修饰变量,表征变量本身不可变,具有如下的使用场景:

定义常量,取代#define,

const修饰函数形参,强制该参数在函数内不可变。

const修饰函数返回值,表征函数返回值的const属性,该值不可改变。

const double PI = 3.14159265358979323846;

//#define PI 3.14159265358979323846

void func1(const int a)

{

}

void func2(const int b)

{

}

struct BigObj

{

};

const BigObj func()

{

BigObj obj;

return obj;

}

const与指针

常量指针,即指针是常量,指针本身不可改变,指针指向内容可变指针常量,即指向常量的指针,指针指向内容为常量不可变,指针本身可变,常量指针常量,指针和指针指向内容均不可改变

常量指针和指针常量的叫法不一而足,各种解释也层出不穷。请参考如下示例代码理解记忆:const距离谁近,修饰的就是谁,谁不可变

int a =10;

int b =20;

int c =30;

//常量指针

int * const const_ptr = &a;

//const_ptr = &b;//指针本身不可修改

*const_ptr = 50;//指针指向内容可以修改

//指针常量

const int* ptr_const1= &a;

//*ptr_const1 = 20;//指向内容为常量,不可修改

ptr_const1 = &b;//指针本身可变

int const * ptr_const2 = &a;

//*ptr_const2 = 20;//指向内容为常量,不可修改

ptr_const2 = &b;//指针本身可变

const int * const c_ptr_c = &a;//两者均不可变化

//*c_ptr_c = 30;

int c =60;

// c_ptr_c = &c;

const与引用

const修饰引用,常用于函数传参,可以减少对象的copy操作,尤其是针对复杂对象,可以增加效率

struct BigObj

{

};

void func(const BigObj& obj)

{

}

const与类

const修饰成员函数,保证函数内不会修改类的成员变量

class People

{

public:

People();

~People();

int getAge()const//不会修改成员变量

{

return m_age;

}

private:

int m_age;

};

const修饰的函数强制函数内部不可修改成员变量的值,当存在修改程序员变量的场景时,可以使用mutable修饰变量

```

mutable int m_age;

```

const属性移除

C++提供运算符const_cast用于去除变量的const限定,用于类型转换,注意const_cast 中的类型必须是指针、引用或指向对象类型成员的指针。

const int constantValue = 5;

int& nonConstReference = const_cast(constantValue);

相关推荐

300M宽带测速对照表:了解您的实际网速
beat365唯一的网址

300M宽带测速对照表:了解您的实际网速

07-16 👁️‍🗨️ 6906
热评云厂商:比格云3亿元,一步一个脚印向前走
beat365唯一的网址

热评云厂商:比格云3亿元,一步一个脚印向前走

07-17 👁️‍🗨️ 9915
[分享]【攻略:奶系技巧】阿婆克烈!当前各大主流副本奶系放太阳时机
馊组词sōu
bat365入口

馊组词sōu

08-01 👁️‍🗨️ 9574
女生下面的唇瓣一边大一边小是不是有什么
bat365入口

女生下面的唇瓣一边大一边小是不是有什么

07-15 👁️‍🗨️ 1653
别样如何省邮费 别样省邮费教程
bat365入口

别样如何省邮费 别样省邮费教程

08-01 👁️‍🗨️ 3243
騨的意思,騨的解释,騨的拼音,騨的部首
365scores下载

騨的意思,騨的解释,騨的拼音,騨的部首

07-11 👁️‍🗨️ 9553
揭秘哥们网攻沙:林志颖带你攻上沙巴克
beat365唯一的网址

揭秘哥们网攻沙:林志颖带你攻上沙巴克

07-09 👁️‍🗨️ 4999
2025显卡十大品牌排行榜:哪个牌子好?
bat365入口

2025显卡十大品牌排行榜:哪个牌子好?

07-19 👁️‍🗨️ 8671