C++中容易忽略的知识
作者:网络转载 发布时间:[ 2013/4/25 10:42:22 ] 推荐标签:
复制控制
1、若要禁止复制,必须声明其复制构造函数为private,若想友元和成员中的复制也禁止,可以声明但是不定义一个private的复制构造函数。
2、如果没有显式定义复制构造函数或者赋值操作符,编译器通常会提供一个默认的。
3、当定义一个新对象,并用一个同类型的对象对他进行初始化时,将显式使用复制构造函数;当将该类型的对象传递给函数或从函数返回值返回该类型的对象时,将隐式使用复制构造函数。
4、使用未定义的成员的任何尝试将导致链接错误。
5、如果定义了复制构造函数,编译器不会自动生成默认构造函数,所以要自己定义默认构造函数。
6、合成析构函数并不删除指针成员所指向的对象。
7、即使编写了自己的析构函数,合成析构函数仍然运行。当撤销对象时,先运行自定义的析构函数,然后运行合成析构函数。
重载操作符
1、::,.*,.,?:不可重载。
2、重载操作符必须具有一个类类型的操作数或枚举类型。优先级和结合性是固定的且不具备短路求值的特征。
3、除了函数调用操作符operator()之外,重载操作符时使用默认实参是非法的。
4、操作符定义为非成员函数时,通常必须将它们设置为所操作类的友元。为的是可以访问类的私有成员。
5、=,(),[],->操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。而复合赋值操作符如+=通常定义为成员,但是定义为非成员,编译时不会出错。改变对象状态的操作符如自增操作符要定义为成员函数。算数的,相等的,关系操作符位操作符一般定义为普通函数。箭头操作符必须定义为类的成员函数,解引用操作符不要求定义成员。()调用操作符必须声明为成员函数,一个类可以定义多个调用操作符版本。定义了调用操作符的类,其对象称为函数对象。即它的行为是类似函数的对象。
6、为了与内置类型保持一致,加法返回一个右值,而不是一个引用。
7、类定义下标操作符时,一般需要定义两个版本:一个为非const成员并返回引用;一个味const成员并返回const引用。
8、前缀操作符:A& operator++();.后缀操作符:A& operator++(int);int形参只是一个标识,没有实际用途。
9、转换操作符 operator type();type表示内置类型名,类类型名,由类型别名定义的名字。对任何可作为函数返回类型的类型(除了void外)都可以定义转换函数。不允许转换为数组类型或函数类型。转化为指针类型(数据或函数指针)以及引用类型时可以的。转换操作符函数必须是成员函数,不能指定返回类型,形参表为空。
10、只能用一个类类型转换,即,定义a能转换为b,b能转换为c,但a不能转换为b再转换为c。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11