1. const的基本使用
用法1
const int Constant1=96;
这个无需赘述。
用法2
const int * Constant2 等价于 int const * Constant2
是说这个 Constant2 这个指针指向的数是常量,不能变。
用法3
int * const Constant3
是说这个 Constant3 这个指针自己是常量,不能再指向其他变量了。
2. const 在函数返回值中的使用
char *Function1()
{
return "Some text";
}
Function1()[1] = 'a';
这么做会导致程序运行崩溃,然后我们就得费力地去追踪错误。
而如果我们像下面这样写的话:
const char *Function1()
{
return "Some text";
}
Function1()[1] = 'a';
在编译阶段就会报错,告诉我们我们在尝试改一个常量,省去了我们追踪错误的烦恼。
3. const 在传参时的使用
void Subroutine(int Parameter1)
{
printf("%d", Parameter1);
}
在 C/C++ 中传参默认是是传一个拷贝值,这也是为什么函数里面对参数进行改变却不能影响外面。
而引用是直接将函数外面的值传进来,因此就可以修改了。
所以通常来说使用“引用”是为了改变函数外的值。
而有时候我们不想修改外面的值为什么还要用引用呢?
这是因为有的变量对象实在太大,拷贝太浪费内存,因此我们想直接访问而不是拷贝。
但是这时候这些变量是不能改变的,所以为了防止我们一不小心忘了这茬,我们加上一个 const。
这样,我们既能直接访问变量,又能确保不会改变他们。
就像这样:
void Subroutine(big_structure_type const &Parameter1);
4. const在类里面的使用
对象的 method 访问 member variables 时都是直接访问,因此可以改变这些成员变量的值。
有些 method 我们明确希望他们没有改变成员变量的能力,这时候就需要const。
class Class1
{
void Method1() const;
int MemberVariable1;
}
5. 总结
举个栗子~:
const int* const Method3(const int* const&)const;
从左往右:
第一个 const 是说 返回的指针指向的 int 值不能变
第二个 const 是说 返回的指针自己不能变
第三个 const 是说 参数里 int* 指针指向的值不能改变,这就要求实参自身必须是 const int*
第四个 const 是说 参数里 int* 指针自身不能变 (配合 & 使用)
第五个 const 是说 这个method 不能改变对象里面的成员变量
网友评论