操作符函数及重载(4)
来源:互联网 发布:淘宝上的电子烟可靠吗 编辑:程序博客网 时间:2024/05/16 05:10
其它操作符重载和限制
下标操作符
•常用于在容器类型中以下标方式获取数据元素
•非常容器的元素为左值,常容器的元素为右值
函数操作符
一.函数操作符
•如果一个类重载了函数操作符,那么该类的对象就可以被当做函数来调用,其参数和返回值就是函数操作符函数的参数和返回值
•参数的个数、类型以及返回值的类型,没有限制
•唯一可以带有缺省参数的操作符函数
解引用和间接成员访问
一.解引用和间接成员访问操作符
•如果一个类重载了解引用和间接成员访问操作符,那么该类的对象就可以被当做指针来使用
自定义类型转换
一.自定义类型转换
•通过构造函数实现自定义类型转换
–class Integer { [explicit] Integer (int const& data) : m_data (data) {}};
–“explicit”关键字可将这种类型转换强制为显式类型转换
•通过类型转换操作符函数实现自定义类型转换
–class Integer { [explicit] operator int (void) const { return m_data; } };
–“explicit”关键字可将这种类型转换强制为显式类型转换,但需要编译器支持C++11标准
•源类型是基本类型,只能通过构造函数实现自定义类型转换
•目标类型是基本类型,只能通过类型转换操作符函数实现自定义类型转换
•源类型和目标类型都不是基本类型,既可以通过构造函数也可以通过类型转换操作符函数实现自定义类型转换,
但不要两者同时使用,引发歧义
•源类型和目标类型都是基本类型,则无法实现自定义类型转换,基本类型间的类型转换规则完全由编译器内置
对象创建操作符
•如果一个类重载了new/new[]操作符,那么当通过new/new[]创建该类的对象/对象数组时,
将首先调用该操作符函数分配内存,然后再调用该类的构造函数
–class Dummy { static void* operator new (size_t size) { … } static void* operator new[] (size_t size) { … } };
•包含自定义析构函数的类,通过new[]创建对象数组,所分配的内存会在低地址部分预留出sizeof(size_t)个字节,存放数组长度
•使用new/new[]操作符的形式代码
对象销毁操作符
•如果一个类重载了delete/delete[]操作符,那么当通过delete/delete[]销毁该类的对象/对象数组时,
将首先调用该类的析构函数,然后再调用该操作符函数释放内存
–class Dummy { static void operator delete (void* p) { … } static void operator delete[] (void* p) { … } };
•包含自定义析构函数的类,通过delete[]销毁对象数组,会根据低地址部分预存的数组长度,
从高地址到低地址依次对每个数组元素调用析构函数
•使用delete/delete[]操作符的形式代码
- 操作符函数及重载(4)
- 操作符函数及重载(1)
- 操作符函数及重载(2)
- 操作符函数及重载(3)
- 操作符函数及重载(5)
- 操作符重载及友元函数
- 函数操作符重载
- C++ 操作符重载、函数对象及类类型转换
- c++部分操作符重载及仿函数使用
- C++类的构造函数及操作符()重载
- 类的操作符重载及友元函数
- 重载函数与重载操作符
- 操作符重载函数多态性
- 重载函数调用操作符
- 重载函数调用操作符
- 重载函数操作符() 仿函数
- 结构体的操作符重载和内部的函数定义及使用(结构体的进一步使用)
- (11)函数及函数重载
- W3C盒模型与IE盒模型
- Java邮件开发(一):使用JMail发送一封简单邮件
- 使用GET,POST请求获取结果
- appium工作原理
- easyui和zTree分别实现树型下拉框
- 操作符函数及重载(4)
- Eclipse的android工程修改目标设备
- spark livy
- Android侧滑菜单
- HTML 导入导出
- OpenCV学习之Hough变换检测直线
- spring 配置多数据源
- Python-起源
- margin值根据标签文本内容变化