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<<firstArg<<endl;

     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�$�

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容