C++::const的使用法总结
2017-04-08 18:39
239 查看
摘要
const 是C++一个强大的工具,可以帮助我们提高程序的健壮性,减少运行期可能发生的错误,但是,对于初学者来说,const也是相对难以掌握的,我将对const进行一下总结。const 变量
普通的内置对象const int i=0; const int& j=i;
const指针
const int *i = new int[30]; //const 修饰的是(*i), 所以(*i),也就是值本身不可变,也就是一个low-level const int * const i = new int[30]; //const 修饰的是(i), 所以(i),也就是指针本身不可变,也就是一个top-level const
const 返回值函数
by-valueclass v{} const v func(int i){ return v(i); //返回一个对象,编译器会进行优化 }
by-reference
class v{} const v& func(int i){ v c(i); return c; //很蠢,因为c在离开该函数后已经被析构了 }
by-pointer
class v{} const v* func(int i){ return new v(i); //也很蠢,开发者还要记得delete它 }
class与const
在这一章节中,将重点介绍class,也就是类与const的一些应用首先,我们定义一个类constTest作为我们测试的舞台
class constTest { public: const int c_int; int _int; public: constTest(); explicit constTest(int); int get_cInt() const; int< 4000 /span> get_int(); };
const 成员变量
const成员变量的声明很简单,只需要在成员变量类型前加上const即可const int c_int;
由于const成员变量的值需要在对象初始化阶段时被定义,因此const成员变量必须通过成员变量赋值列来完成定义
constTest::constTest(int i):c_int(i),_int(i) {}
这种写法十分高效,比以下写法好的多
constTest::constTest(int i):c_int(i) { this->_int=i; }
但是要注意的是赋值的顺序最好与声明的顺序一致,防止某些构造函数参数间的依赖性:
class A{ public: A(int a):a(a); } class C{ public: C(A a):a(a); } class B{ public: int num_a; A a; C c; B(int); } B::B(int num):C(this->num_a),num_a(num),A(this->C) //这句话有bug哟~ {}
const 成员函数
在class中声明const成员函数,只需要在函数后加一个const即可:int get_cInt() const;
被声明为const的成员函数:
可以访问所有的成员变量;
不可以对成员变量进行赋值;
不可以调用非const的成员函数(因为非const的成员函数有权利对成员变量进行赋值)
没有被声明为const的成员函数:
可以访问所有的成员变量;
可以对非const成员变量进行赋值;
可以调用所有的成员函数
const对象
我们构造一个普通对象和一个const对象const constTest c1(1); constTest c2(1);
被声明为const的对象
可以访问所用的成员变量
不可以进行任何赋值
不可以调用非const成员函数
没有被声明为const的对象
可以访问所用的成员变量
可以调用所有成员函数
参考文献
《Effective C++》《More Effective C++》
相关文章推荐
- C++中const使用总结
- C++ Const 使用总结,代码实例亲测
- C++中const使用的总结
- c++中成员变量访问以及const的使用总结
- C++中const使用总结
- [转]C++ const变量使用技巧总结
- C++中const的不同使用方法及问题总结
- C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!
- C++中const关键字的使用总结
- c/c++中const使用总结(金典)
- [转]C++ const变量使用技巧总结
- C++ Const 使用总结,代码实例亲测
- C++ const使用情况总结
- [转]C++ const变量使用技巧总结
- C++ const变量使用技巧总结
- C++ const关键字的使用知识点总结
- C++中const总结
- 总结C++中的所有强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)
- c++中const关键字使用详解
- 关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。