运算符重载
Table of Contents
摘抄自C++ FAQ Lite的运算符重载笔记:
转载说明
本文摘抄自C++ FAQ Lite中文版
版权声明: Part of C++ FAQ Lite, Copyright © 1991-2001, Marshall Cline, cline@parashift.com
[13.5] 什么运算符能/不能被重载?
大多数都可以被重载。C的运算符中只有 . 和 ? :(以及sizeof,技术上可以看作一个运算符)。C++增加了一些自己的运算符,除了::和.*,大多数都可以被重载。
这是一个下标运算符的示例(它返回一个引用)。先没有运算符重载:
class Array {
public:
int& elem(unsigned i) { if (i > 99) error(); return data[i]; }
private:
int data[100];
};
int main()
{
Array a;
a.elem(10) = 42;
a.elem(12) += a.elem(13);
}
现在用运算符重载给出同样的逻辑:
class Array {
public:
int& operator[] (unsigned i) { if (i > 99) error(); return data[i]; }
private:
int data[100];
};
int main()
{
Array a;
a[10] = 42;
a[12] += a[13];
}
Date: 2010-10-12 16:35:57 CST
HTML generated by org-mode TAG=7.01g in emacs 23