中心:使用变量自增或者处减使用尽量使用++i与--i,而不要去使用i++与i--++i与--i可以做左值也可以做右值,而i++与i--只能做右值。对于基础类型i++与++i结果相同,但是i++肯定会产生临时变量,对于类类型就会执行构造函数和拷贝赋值函数,开销还是相对较大的,对于++i可以使用引用避免...
分类:
其他好文 时间:
2015-12-01 22:40:26
阅读次数:
183
条款05:了解C++默默编写并调用哪些函数默认构造函数、拷贝构造函数、拷贝赋值函数、析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性。当我们没有人为的定义上面的几个函数时,编译器会给我们构造默认的。当成员变量里有const对象或引用类型时,编译器会不能合成默认的拷贝赋值...
分类:
编程语言 时间:
2015-11-22 17:26:47
阅读次数:
233
0 左值和右值 一个左值表达式代表的是对象本身,而右值表达式代表的是对象的值;变量也是左值。1 右值引用作用 为了支持移动操作(包括移动构造函数和移动赋值函数),C++才引入了一种新的引用类型——右值引用,可以自由接管右值引用的对象内容。2 右值引用绑定的对象 返回非引用类型的函数,产生右值的...
分类:
编程语言 时间:
2015-11-01 16:31:20
阅读次数:
178
如果想在一个内含reference成员的class内支持赋值操作,必须自己定义copy assignment操作符。而且面对“内含有const成员的”class,编译器的反应也是相同的,由于更改const成员是非法的,所以编译器不知道如何在其自己生成的赋值函数之中去面对他们。templatecl.....
分类:
编程语言 时间:
2015-10-04 20:50:52
阅读次数:
177
在预解析过程中:1、变量、变量的声明: 默认赋值为undefined2、this: 赋值3、函数声明: 赋值这三种数据的准备情况我们称之为“执行上下文”或“执行上下文环境”;函数中的变量:如果在函数中,除了以上数据之外,还会有其他的数据,如function fn(x) { console.log(a...
分类:
其他好文 时间:
2015-09-22 20:23:36
阅读次数:
141
##执行上下文环境在一段JS真正运行之前浏览器已经做了一些准备工作:1.变量:变量的申明,默认值为undefined;2.this:赋值;3.函数申明:赋值变量:console.log(a)---> a is not undefinedconsole.log(a)-----> undefinedva...
分类:
其他好文 时间:
2015-09-20 18:56:13
阅读次数:
175
参考资料:黄邦勇帅(里面对于临时变量的说法我不是很理解,感觉里面的解释有问题)用到复制构造函数的情况:1.函数值传递2.返回对象3.用一个对象初始化另一个对象重点注意下面两种情况:① 只调用复制构造函数,不会生成临时变量 A a = b;② 会产生临时变量,会调用复制构造函数和赋值函数 A a;.....
分类:
编程语言 时间:
2015-09-05 19:23:50
阅读次数:
177
一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形式比较简单,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。// 运算符重载,这里又叫赋值函数string& operat...
分类:
其他好文 时间:
2015-08-31 14:54:17
阅读次数:
148
1.从概念上区分:复制构造函数是构造函数,而赋值操作符属于操作符重载范畴,它通常是类的成员函数2.从原型上来区分:复制构造函数原型ClassType(const ClassType &);无返回值赋值操作符原型ClassType& operator=(const ClassType &);返回值为C...
分类:
其他好文 时间:
2015-08-15 09:04:46
阅读次数:
230
第 9 章 类的构造函数、析构函数与赋值函数
1.构造函数初始化表的使用规则:
1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。
2)类的 const 常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。
3)类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。
2. 类 String 的构造函数与析构函数
...
分类:
编程语言 时间:
2015-08-04 22:54:24
阅读次数:
165