1.const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量
void f1(const int *ip);
void f2(int const *p);
//这两个函数接受的参数类型一样,都表示一个指向常量的指针
2.令函数返回一个常量值
class Rational{...};
const Rational operator* (const Rational&,const Rational &rhs);
Rational a,b,c;
(a*b) = c;//错误,因为返回的值是const,不能被赋值;加上const也可以避免发生这样的错误
if(a*b = c){...}//少写了一个=,返回值类型为const将可以避免这个错误
3.const成员函数
- 将const用于成员函数的目的:使类接口比较容易被理解,可以知道那个函数可以改动对象内容哪个不行;使操作const对象成为可能。
- 两个成员函数如果只是常量性不同,可以被重载。如下代码:
class TextBlock
{
public:
...
const char& operator[](std::size_t position)const
{
return text[position];
}
char& operator[](std::size_t position)
{
return Text[positon]
}
private:
std::string text;
};
TextBlock tb("hello")
cout<<tb[0];//调用char& operator[](std::size_t position)
const TextBlock ctb("World");
cout<<ctb[0];//调用const char& operator[](std::size_t position)
请记住
- 将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
- 编译器强制实施bitwise constness,但你编写程序时应该使用“概念上的常量性”。
- 当const和non - const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。
博客主要介绍了C++中const的使用。const在星号左右位置不同,含义不同;可令函数返回常量值;用于成员函数能使类接口易理解,操作const对象成为可能,且常量性不同的成员函数可重载。还提到声明const可助编译器查错,编写时应注重概念上的常量性,可避免代码重复。
1796

被折叠的 条评论
为什么被折叠?



