C++ FAQ学习笔记 13 章 运算符重载
2013-08-28 23:48
369 查看
[13.3] 有什么运算符重载的实例?
[Recently changed so it uses the std:: syntax (on 7/00). Click here to go to the next FAQin the "chain" of recent changes.]
这里有一些运算符重载的实例:
myString + yourString 可以连接两个 std::string 对象
myDate++ 可以增加一个 Date 对象
a * b 可以将两个 Number 对象相乘
a[i] 可以访问 Array 对象的某个元素
x = *p 可以反引用一个实际“指向”一个磁盘记录的 "smart pointer" —— 它实际上在磁盘上定位到 p 所指向的记录并返回给x。
[13.5] 什么运算符能/不能被重载?
大多数都可以被重载。C的运算符中只有 . 和 ? :(以及sizeof,技术上可以看作一个运算符)。C++增加了一些自己的运算符,除了::和.*,大多数都可以被重载。这是一个下标 运算符的示例(它返回一个引用)。先没有运算符重载:
[13.7] 我能为“幂”运算创建一个 operator** 吗?
不行。运算符的名称、优先级、结合性以及元数都是由语言固定的。在C++中没有operator**,因此你不能为类类型创建它。
如果还有疑问,考虑一下x ** y与x * (*y)等同(换句话说,编译器假定 y 是一个指针)。此外,运算符重载只不过是函数调用的语法修饰。虽然这种特殊的语法修饰非常美妙,但它没有增加任何本质的东西。我建议你重载pow(base,exponent)(双精度版本在<cmath>中)。
顺便提一下,operator^可以成为幂运算,只是优先级和结合性是错误的。
如何创建operator^重载呢?
Matrix(const Matrix& m); // 拷贝构造函数
Matrix& operator= (const Matrix& m); // 赋值运算符
[13.9] 为什么Matrix(矩阵)类的接口不应该象数组的数组?
为什么那样写呢?返回引用和返回值的区别?[13.10] 该从外(接口优先)还是从内(数据优先)设计类?
相关文章推荐
- 【C++】学习笔记草稿版13(运算符重载提高篇)
- 【C++学习笔记】13_指针的运算
- 【学习笔记】C++primer plus 13.继承
- 【C++ rimer 学习笔记】ch13 复制控制
- 【C++学习笔记】常见运算符重载
- C++学习笔记13 STL Set和Map
- [C++学习]剑指offer13题的学习笔记
- C++ FAQ学习笔记 22章 继承 — 抽象基类(ABCs)
- C++ FAQ学习笔记 23章 继承 — 你所不知道的
- 学习笔记13-C++-内存分配
- C++学习笔记之运算符重载例子
- 嵌入式开发之C++基础学习笔记5--静态成员,友元,运算符重载,模板,文件流
- c++学习笔记(13.专题三经典问题解析)
- C++ FAQ学习笔记 18章 继承
- C++学习笔记之运算符重载
- C++学习笔记(13)——利用对象、引用、指针调用虚函数
- c++学习笔记 运算符重载
- C++学习笔记13:类继承和派生、虚函数
- C++ FAQ学习笔记 9,10章
- C++ FAQ学习笔记 20章 继承-虚函数