网站空间托管合同 .doc,东莞市南华职业技术学校,wordpress 内网 插件,太原营销型网站作用
const修饰符用来定义常量#xff0c;具有不可变性。
修饰变量#xff0c;说明该变量不可以被改变#xff1b;修饰指针#xff0c;分为指向常量的指针#xff08;pointer to const#xff09;和自身是常量的指针#xff08;常量指针#xff0c;const pointer具有不可变性。
修饰变量说明该变量不可以被改变修饰指针分为指向常量的指针pointer to const和自身是常量的指针常量指针const pointer修饰引用指向常量的引用reference to const用于形参类型即避免了拷贝又避免了函数对值的修改修饰成员函数说明该成员函数内不能修改成员变量。
指针常量和常量指针
指针常量指的是该指针本身是一个常量不能被修改但是指针指向的对象可以被修改。
int a 10;
int b 20;
int* const ptr a; // 指针常量
*ptr 15; // 可以修改 a 的值
ptr b; // 错误ptr 是指针常量不能改变指常量指针指的是这个指针指向的对象是一个常量不能被修改但是指针本身可以被修改。
int a 10;
int b 20;
const int* ptr a; // ptr 指向 a
*ptr 15; // 错误不能修改所指向的值
ptr b; // 可以改变 ptr 的指向类型指针是否可变指向的值是否可变定义方式指针常量否是int* const ptr a;常量指针是否const int* ptr a;
const修饰的函数能否重载
onst修饰的函数可以重载。
const 修饰的成员函数与非 const 修饰的成员函数被视为不同的函数签名。编译器会根据调用时对象的 const 性来决定调用哪个版本的函数。
非 const 对象无论是否是const成员函数都能调用但是如果有重载的非const函数非const对象会优先调用重载后的非const函数。const 对象只能调用 const 修饰的成员函数也无法调用非const的成员函数
示例代码
#include iostream
using namespace std;class MyClass {
public:void display() {cout Non-const display() endl;}void display() const {cout Const display() endl;}
};int main() {MyClass obj; // 非 const 对象const MyClass constObj; // const 对象obj.display(); // 调用非 const 版本constObj.display(); // 调用 const 版本return 0;
}输出
Non-const display()
Const display()宏定义 #define 和 const 常量 区别
宏定义 #defineconst 常量宏定义相当于字符替换常量声明预处理器处理编译器处理无类型安全检查有类型安全检查不分配内存要分配内存存储在代码段存储在数据段可通过 #undef 取消不可取消