Boolan-C++面向对象高级编程(下)第一周笔记

1. Conversion function转换函数

      一共分为两类:一种是转化为其他类型,另一种是其它类型转化为类中的类型。

      比如:

      Operator double()const { returnm_num/m_den; }

       其中,m_num和m_den在类中为int型。

2. Non-explicit-one-argument

      例如:

      Fraction operator+(const Fraction&

      f){return Fraction(……);}

      使用时:Fraction f(3,5) ;Fraction d2 = f+1;

3. Conversion function & Non-explicit-one-argument

      若两个转换同时出现在类内,或导致执行的混乱,要慎重使用。

4. Pointer-like-classes

     一般有operator*和operator->两种操作符

5. Variadic template数目不定的模板参数

     例如:

     Void print(){};

     Temoplate

     Void print(const T& firstArg , const Types&…args)

    {

     Cout<

     Print(args…);

     }

     解析:typename…中的省略号,表示有很多个type,这由使用者决定。当第一个参数                       firstArg打印时,要把剩下的args…一起传给print。到下一个print时, 系统会自动将                 args…中的第一个拿出来作为firstArg。如此循环,知道当args…中没有参数,这是                 会调用void print() {},有点像递归。


6. Reference & pointer

    Reference与pointer有相同的功能,当时仍有差别。

    例如:

   Int x = 0 ;

   Int r& = x;

   Int* p = &x;

   此时,r = x ,*p = x。而且在定义r的同时必赋值,而p则可以不用。

    加上以下的语句:

     Int  x2 = 5;

     r = x2 ;

    Int& r2 = r;

   此时,r 、r2、x都为5,说明可以通过改变引用来改变x的值,而不能通过改变p来改变x的     值。






mso-a�Wk�$�

你可能感兴趣的:(Boolan-C++面向对象高级编程(下)第一周笔记)