zoukankan      html  css  js  c++  java
  • <c++ primer>第五部分 高级主题

    一  多重继承与虚继承

    1多重继承

    派生类的对象包含每个基类的基类子对象。

    派生类构造函数的次序按照基类构造函数在派生类类表中的出现顺序。

    析构函数的次序是构造函数的逆序。

    多个基类可能导致二义性。(含有相同的成员)

    解决方法:1指定某个基类。2在派生类中定义这样一个成员。

    2虚继承(virtual)

    为了避免多次包含同一基类,定义虚继承。

    类通过虚继承之处它希望共享其虚基类的状态。

    共享的基类子对象称为虚基类。

    无论虚基类出现在继承层次的任何地方,总是在构造非虚基类之前构造虚基类。

    二优化内存分配

    c++中,内存分配和对象构造紧密连接。new表达式分配内存,使用构造函数构造对象;调用析构函数撤销对象,释放内存。

    c++中除了new和delete之外,定义的内存分配方式有:

    分配和释放内存:

    (1) allocator类的allocate和deallocate成员。

    (2)operator new 和operator delete(这两个被new和delete表达式调用)

    构造和撤销对象:

    (1)allocator类的construct和destroy成员

    (2)定位new表达式 new(address) type(initializer-list)

    (3)直接调用对象的析构函数。析构函数并不释放对象所在的内存。

    (4)unitialized_fill和unitialized_copy

    三 固有的不可移植的特征

    1位域

    一种特殊的类数据成员。

    例如,class file{Bit mode:2;Bit pp:3;}

    补充:按位与& 按位或| 按位异或^ 按位求反~ 左移<<  右移>>

    2 volatile

    关键字volatile告诉编译器,对这样的对象不执行优化。

    一般用在多线程程序中,以防止出错。

    3extern "C"---链接指示

    说明是c语言写的函数





  • 相关阅读:
    VS2008 SP1 安装时异常处理
    Android和iOS自带的人脸检测API
    FAAST 0.08 动作列表
    C#日期格式化(转)
    希望看这篇文章的人,耐心的看完这个短片
    C#实现转换十六进制
    App Store生存法则:iOS开发者经验分享
    开始的关键不是什么时候开始 而是开始后的坚持
    Eclipse IDE
    最近需要看的网站
  • 原文地址:https://www.cnblogs.com/catkins/p/5270757.html
Copyright © 2011-2022 走看看