首页 > 代码库 > 第十一章:使用类

第十一章:使用类

1、运算符重载   operator+  (take ‘+‘ for example)

  (1) 重载后必须至少有一个用户定义的操作数(struct class etc...),防止把一个C++标准的‘-’重载成‘+‘

  (2) 不能违反运算符原来的句法规则; 例如不能将‘%‘重载成一个操作数

    (3) 不能创建新运算符

    (4) 有些运算符不能重载    sizeof   ?:    .   .*     ::   etc....

  (5) 有些运算符只能通过成员函数重载   =   ()   []   ->

2、友元

  (1) friend XXX operator+(xxx,xxx);  运算符重载,非成员函数,但是可以访问私有成员; 

  常用的友元:重载<<操作符  (常用的cout就是ostream类对<<重载过来的,)

  test_code:

  #include <iostream>
  using namespace::std;

class Time{
private:
  int min;
  int hour;
public:
  Time(int n,int m);
  friend ostream& operator<<(ostream & os, const Time & t);        //BTW: ostream处必须为引用;返回值为ostream& 保证可以实现cout << "xxx" << t << "xx"的语句
};

Time::Time(int n,int m){
  min = n;
  hour = m;
}

ostream& operator<<(ostream & os, const Time& t){
  os << t.hour << "hours. " << t.min << "minutes" ;

  return os;

}


int main(void){
  Time test(5,6);
  cout << "haha "  <<  test;
}

##print:haha 6hours.5minutes

(2)成员函数与非成员函数的一个小差别

  class Time{};

  Time operator+(const Time& t);

  friend Time operator+(const time & t1,const time & t2);

3、类的转换

  TBD 

 

第十一章:使用类