C++高级惯用法
安林
成功只是一个变量, 每个人对它的定义都不同,每人每个时期也赋于它不同的值,人会因为社会经验,人生经历而改变, 这个变量值也不断改变...
展开
-
1.构造函数和复制构造函数相关的初始化
1.构造函数和复制构造函数相关的初始化最近由于项目比较闲,自己自学了一些C++的知识,也在博客上总结一下。首先理解“初始化”和“赋值”,一个新对象创建时,才会有初始化操作,初始化操作出现在构造函数中;而赋值是用来修改一个已经存在的对象的值,出现在operator=操作函数中。1.1复制构造函数:用同一个类产生的另外一个对象的值来为将要被创建的对象进行初始化,执行这样的初始化操作的构造函原创 2013-12-23 14:40:11 · 1157 阅读 · 0 评论 -
2.赋值和公有数据
2.赋值和公有数据 和复制构造函数一样,如果我们没有声明赋值操作符函数,c++会自动为我们合成一个。缺省的赋值操作符的适用场合和缺省的复制构造函数一样,如果缺省的复制构造函数是错误的,那么缺省的赋值操作符几乎也可以被确定为错误的(反之亦然)。 赋值操作符和复制构造函数都有着几乎同样的逻辑,它们的区别主要在于: 1.当对象被自赋值时,赋值操作符必须可以工作原创 2013-12-23 15:03:17 · 1094 阅读 · 0 评论 -
3.隐式类型转换
4.隐式类型转换 隐式类型转换会使得编译器能够在暗中修改我们的代码,我们可以通过如下两种方式来声明一个从类型F到类型T的隐式转换: 1.在T中声明一个仅接受一个类型F的参数的构造函数(包括使用的缺省参数值的构造函数,如:T::T(F,int = 0)) 2.在F中声明一个operator T的转换函数如下类Rational:class Ra原创 2013-12-23 15:24:07 · 1063 阅读 · 0 评论 -
4.操作符重载:成员还是非成员 和 5.重载、缺省值以及省略符
4.操作符重载:成员或非成员?C++中,对操作符的重载有两种方法:将它作为成员函数或者不作为成员函数。如果我们正为一个不属于我们的类重载一个操作符,那它应该是一个非成员函数。对于成员和非成员的选择会影响到使用该操作符的代码,比如,作为成员函数的操作符可以使用this指针,并可以用非限定形式来使用类中的成员。此外,这个选择结果还会影响到用户眼中该操作符的行为。如果操作符被实现为一个成员函原创 2013-12-24 14:34:10 · 1070 阅读 · 0 评论 -
7.返回值为引用 和 8.静态对象的构造
7.返回值为引用 函数可以返回一个引用,但注意局部对象返回后会自动销毁,如果返回对象在返回后会被摧毁,就不能返回引用,而必须以值的方式返回它,返回时将会产生一个一份拷贝,函数会把拷贝返回给调用函数。8.静态对象的构造 我们可以用构造函数来对那些有着static存储类型的对象进行初始化: static String hello("hell原创 2013-12-24 14:44:29 · 1116 阅读 · 0 评论 -
6.Const
6.ConstC++用const来定义常数: //C #define BUFF_LENGTH 1024 int buffer[BUFF_LENGTH]; //C++ const int BUFF_LENGTH= 1024; int buffer[BUFF_LENGTH]; 这样做的好处是:编译器知道BUFF_LENGTH的名字和类型,这样做也不会给原创 2013-12-24 14:41:38 · 843 阅读 · 0 评论