1.操作符重载实际上就是函数重载
在C++中
不能被重载的符号有:
a. .
b. .*
c. ?:
d. ::
e. sizeof
符号:
= () [] -> 都只能在类的内部进行重写
>> << 只能在类外进行重写,然后以友元的方式
在类的成员方式重写的符号:
如果是一元符号,那么就不需要参数,用this指针代替
如果是二元符号,就只需要一个参数,另外一个由this指针代替
以友元方式:
如果是一元符号时,重载时必须有一个参数
如果是二元符号时,重载时必须有两个参数
>> 和 << 都只能使用友元方式进行重载
各种符号的重写一般规则:
符号 方式
a. () 返回类型 operator()( 参数 )
b. > bool operator >(参数)
c. < bool operator<(参数)
d. == bool operator==(参数)
e. >> istream& operator>>(参数) (只能通过友元)
f. << ostream& operator<<(参数) (只能通过友元)
g. char * operator char *(){return 指针}
int operator int() {return 数值}
h. 前置++ 返回类型 operator++()
{
this->data++;
return *this;
}
i. 后置++ 返回类型 operator++(T i) //需要一个参数 {
{
返回类型 tmp;
tmp=*this;
this->data++;
return tmp;
}
j. 1. new void *operator new(size_t size)
2. new void *operator new(size_t size,Exception) //1,2只是返回错误不同
3. new void *operator new(size_t size,void *p) //3,返回指定的地址 k. new[] void *operator new[](size_t size)
l. delete void operator delete(void* addr)
m. delete[] void operator delete[](void *addr)