下面是“C++中 const 的使用详解”的完整攻略。
一、const 的基本概念
const 是 C++ 中的一个关键字,表示“常量”的意思。具体来说,const 可以用来修饰变量、函数、指针等,表明它们在程序执行过程中不能被修改。使用 const 的好处是可以增强程序的可读性和安全性。
二、const 对变量的修饰
1. const 修饰普通变量
在定义变量时使用 const 可以将这个变量定义为常量,例如:
const int MAX_NUM = 100;
与宏定义相比,使用 const 定义常量可以使得编译器对其进行类型检查和代码优化,提高代码的可维护性和执行效率。
2. const 修饰指针变量
const 也可以用来修饰指针变量,表示指针指向的内存区域不可修改。例如:
const char* str = "hello";
这里的 const 表示指针指向的字符串内容不可修改。如果要定义一个指针本身不可修改的指针,需要使用 const 指针:
int num = 100;
const int *p = #
这里的 const 表示指针本身不可修改,但是指针指向的内存区域可以修改。
3. const 修饰引用
const 也可以用来修饰引用,表示引用的对象不可修改。例如:
int num = 100;
const int& ref = num;
这里的 const 表示引用的对象不可修改,但是可以通过修改原始变量 num 来改变引用的值。
三、const 对函数的修饰
1. const 成员函数
在类中定义成员函数时,如果不希望这个函数修改对象的值,可以将它定义为 const 成员函数。例如:
class CMyString {
public:
const char* c_str() const;
private:
char* m_pData;
};
const char* CMyString::c_str() const { // const 成员函数
return m_pData;
}
这里的 const 表示这个函数不会修改对象的值,从而避免了不必要的副作用。
2. const 参数和返回值
函数参数和返回值也可以使用 const 进行修饰。例如:
void func(const int num);
const int func(const int num);
这里的 const 表示函数不会修改参数或返回值,增加了程序的安全性和可读性。
四、示例说明
1. 指针指向的字符串内容不可修改
#include <iostream>
#include <string.h>
using namespace std;
int main() {
const char* str = "hello";
// strcpy(str, "world"); // 错误:编译不通过
cout << str << endl;
return 0;
}
上述程序中,指针 str 指向的字符串内容是不可修改的,因此如果尝试使用 strcpy 进行赋值操作,编译器会报错。
2. 通过 const 成员函数访问对象值
#include <iostream>
using namespace std;
class CMyString {
public:
CMyString(const char* pData);
const char* c_str() const;
private:
char* m_pData;
};
CMyString::CMyString(const char* pData) {
m_pData = new char[strlen(pData) + 1];
strcpy(m_pData, pData);
}
const char* CMyString::c_str() const {
return m_pData;
}
int main() {
const CMyString str("hello");
// str[0] = 'H'; // 错误:编译不通过
cout << str.c_str() << endl;
return 0;
}
上述程序中,通过 const 成员函数 c_str() 访问对象 str 的值,避免了可能的修改操作并增强了程序的可读性。如果尝试使用 str[0] = 'H' 修改对象的值,编译器会报错。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中const的使用详解 - Python技术站