C/C++中的const的使用方法
1、修饰常量
const int i = 4; //i是常量
2、修饰指针
主要看const是在*前还是*后面,在*前是指针所指向的内容是常量,在*后面是指针是常量
const int *p; //指针所指向的内容是常量
int const *p; //指针所指向的内容是常量
int * const P; //指针是常量
const int* const p;//指针和指针所指向的内容都是常量
3、修饰类对象时
被const修饰的对象,对象中的任何成员都不能修改,成员中的被const修饰的成员函数才可以被调用,未被const修饰的函数不能被调用,因为有修改数据成员的风险。
class A
{
public:
void func1();
void func2() const;
};
const A a;
a.func1(); //错误
a.func2(); //正确
4、const修饰的成员变量
被const修饰的成员变量不能被修改,所以只能在初始化列表中进行初始化
class A
{
public:
const int m_iAge;
A(int age):m_iAge(age)
{
}
};
A a(10);
5、const修饰成员函数
被const修饰的成员函数不能修该对象中的成员,某个成员函数不会修改数据成员,最好用const进行修饰。
常成员函数,对数据成员只有可读权限
class A
{
public:
int m_iAge;
void func1() const; //常成员函数
{
//m_iAge = 10; //错误,常成员函数对数据成员只有可读权限
}
};
6、const在函数声明中使用
修饰形参时,被const修饰的变量是输入型参数,未被修饰的形参,如果是指针,或者引用,多为输出型参数
void func1(const int a,int *b); //形参a为输入型参数,形参b为输出型参数
void func2(const int a,int &c); //形参a为输入型参数,形参c为输出型参数
参考了前辈写的这篇博客https://www.jb51.net/article/118141.htm