
const在四种方案如以下:
int b = 500;
const int *a = &b; ①(底层const)
int const *a = &b; ②(底层const)
int *const a = &b; ③(顶层const)
const int *const a = &b; ④(靠右的是顶层const。靠左的是底层const)
第一种情况:const位于星号的左側那么const就是用来修饰指针所指向的变量,即指针指向为常量;这样的情况下不同意对内容进行更改操作。(底层const)
int b = 500;
const int *a = &b;
//*a = 600; 错误,可是*a的值能够通过其它的途径改动,其一为:
b = 600;//如今*a的值为600
cout << *a << endl;
其二为:
int c = 600;
a = &c;//如今*a的值为600
cout << *a << endl;
这样的情况能够先不进行初始化
另外一种情况和第一种情况一样。
第三种情况为指针本身为常量,这样的情况下不能对指针本身进行更改操作,而指针所指向的内容不是常量,这样的情况必须初始化。
//int *const a; 错误,必须初始化
int b = 500, c = 600;
int *const a = &b;
*a = 600;
//cout << a++ << endl;错误
第四种情况为指针本身和指向的内容均为常量。
//=============================================================================================================================
再看看const成员函数:
可在不改变对象的成员函数的函数原型中加上const;
class Point
{
int xVal, yVal;
public:
int GetY() const;
};
int Point::GetY() const
{
return yVal;
}
假设const放在函的申报数量前,意味着返回功能值它是一个常数。
版权声明:本文博客原创文章。博客,未经同意,不得转载。