美文网首页
Boolan C++面向对象高级编程(下)第一周

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

作者: MRSUMMER163 | 来源:发表于2017-08-09 21:05 被阅读0次

    第一周

    一、导读

     

    二、conversion function 转换函数

    转换函数语法

    operator double() const{} 通常是const(不是const也可以编译通过)

    1.函数名称

    2.没有返回类型,返回类型就是函数名称中的类型

    三、non-explicit one argument ctor

    只有一个实参就可以

    non-explicit

    Fraction(int num,int den=1):m_numerator(num),m_denominotor(den){}

     

    explicit-one-argument ctor

    explicit只用在构造函数的前面(还有模板的一小部分)

     

    四、pointer-like classes

    1.最经典的就是智能指针

    两个操作符重载 *和 ->

    c++语法:->箭头符号作用的结果可以继续作用下去

    sp->返回结果是px,->已经消耗掉,但是px还可以继续->

    2.迭代器

    五、function-like classes

    仿函数

    能够接受()操作符

    Gun C

    select1st<Pair>()()

     

    标准库中,仿函数所用的奇特的base classes

    大小是0,没有函数

    unary_function

    binary_function

    六、namespace经验谈

     

    七、class template

     

    八、function template

    类模板使用时需要指明type,函数模板使用时不用指明type

    编译器会对function template进行实参推导

    九、member template

     

     

    标准库中很多类的构造函数使用成员模板

    十、specialization 模板特化

    十一、    partial specialization  模板偏特化

    1.个数的偏

    左边到右边,不能跳

    2.范围的偏

    十二、    template template parameter  模板模板参数

    template<typename T> 中typename和class共通,历史原因,原来没有typename只有class。

    十三、    关于C++标准库

        标准库中的容器和算法都自己试一遍

    十四、    三个主题

    C++11

    第一步,确认支持c++11:macro_cplusplus

    1.variadic templates

    数量不定的模板参数

    2.auto

       C++的语法糖

    3.ranged-base for

    {}形成一个容器(c++11)

    遍历容器方便很多

    以前使用iterator或者foreach遍历容器

    编译器怎么实现引用:都是用指针做的

    十五、    Reference

    从逻辑上r代表x,从实现上r是一个指针

    1.一定有初值;

    2.不能再变;

    3.Object和其reference的大小相同,地址也相同(全都是假象)

    Reference的常见用途

    Reference通常不用于声明变量,而用于参数类型和返回类型的描述。

     

    函数签名

    const是不是函数签名的一部分?YES!

     

    十六、    复合&继承关系下的构造和析构

        参看第一部分的内容。

    相关文章

      网友评论

          本文标题:Boolan C++面向对象高级编程(下)第一周

          本文链接:https://www.haomeiwen.com/subject/npoqrxtx.html