本文主要是介绍Effective C++ 条款3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
尽可能使用const
const关键字在编程中的应用广泛,如何灵活的发挥它的优势值得我们探讨,
首先
理解什么是const,如何使用const。
我们看一下对于一个指针有关const的应用。
char g[]="hello";
char *p=g;
const char *p=g;//该指针指向的数据不可修改
char *const p=g;//该指针自身的值不能修改
const char * const p=g;//该指针指向数据不能修改,自身的值也不能修改
其次
有关迭代器的const性质
const_iterator迭代器不可以改变指向的数据,可以改变自己的值
例如:
std::vector<int>::const_iterator m;
接着
const 关键字可以实现重载
如下代码:
#include<iostream>
using namespace std;
class What
{
public:void Fun()const{cout << "const Fun";}void Fun(){cout << "Fun";}void Fun1(){cout << "Fun1";}
};int main()
{What const w;w.Fun();//调用const Funcout << endl;const_cast<What&>(w).Fun();//调用Funreturn 0;
}
如上代码,const对象调用const函数,非const对象调用非const函数,而且大家都知道const对象不能调用非const函数。
最后
我们要明白对于一个类的const函数来书,const属性只对该类的成员数据有效,并且为了避免代码重复,我们选择非const同名成员函数嵌套const同名成员函数。
如下代码
class CTextBlock{
public:const char& operator[](std::size_t position)const{//..........return pText[position];}char& operator[](std::size_t position){return const_cast<char&>(static_cast<const CTextBlock&>(*this)[position]);}char * pText;int length;
};
这篇关于Effective C++ 条款3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!