C++ const使用情况总结

C++ const使用情况总结:

1、const 用户指针的两种情况
1) 指针*符号在const右:
char const *szValue = "V1R2B120";
const char *szValue = "V1R2B120";
可以修改指针szValue,不能修改指针内容*szValue;
2) 指针*符号在const左:
char* const szValue = szInput;
不能修改指针szValue,可以修改指针内容*szValue;

2、const限定函数的传递值参数
void FunStr(const char* szInput);
在函数Fun中,不能修改szInput这个指针的内容;
void FunInt(const int iInput);
在函数FunInt这个函数中,iInput是传入的参数,获得传入值后,就不能更改;
这个限定,只能限定函数内部,不能限定函数使用者。

3、const限定函数的返回值
const MyClass FunClass();
函数FunClass返回的对象,只能调用类MyClass中的const成员变量和函数;
const限定返回值常用于双操作符的函数,如
const operator *(const MyClass* Value1, const MyClass* Value2)
{
    return new MyClass(Value1->x*Value2->x);
}
防止:
MyClass a, b, c;
(a*b) = c;/*预防这样的等式*/
也用于如下字符串指针的方式:
const char* getString();/*预防外部对string内容的修改*/


4、const限定类得成员函数
class ClassName
{
    ....
public:
    int getValue() const;
}
获得的能力:可以操作常理对象;
失去的能力:不能修改内的数据成员,不能在函数中调用其他不是const的函数。

5, tips: 类构造函数是不能定位为const
Class Myclass{
public:
    Myclass() const;//error
。。。。。。
}
 
原文地址:https://www.cnblogs.com/runner42/p/2848958.html