zoukankan      html  css  js  c++  java
  • [C++知识点]2015.4.18

    1.“static_cast/强制转换”后普通函数、虚函数的表现

    A基类

    B子类

    实例aPtr:将B实例强制抓换得到的A实例

    实例bPtr:将A实例强制转换得到的B实例

    clipboard

    总结:

    (1)

    aPtr因为是从B实例强制转换过来的,所以虚函数始终调用B的虚函数实现

    bPtr因为是从A实例强制转换过来的,所以虚函数始终调用A的虚函数实现

    (2)

    static_cast和强制转换则根据转换后的结果来进行调用

    2.sizeof内存对齐

       步骤一:结构体内每个变量,有效对齐值=“min(当前位置的变量类型的长度, n)”获得初步的size为num)

       步骤二:num根据“min(所有变量类型的最长长度, n)”补充对齐(到能被该值整除的地步)

    范例:

    #pragma pack(push, 4)

    struct A{

        int a;

        short b;

        char c1;

        char c2[7];

        int d;

        char e;

    }

    步骤一:

    内存分配如下:

    a:  0 1 2 3 

    b:  4 5 

    c1: 6 

    c2: 7 8 9 10 11 12 13

    d:  16 17 18 19

    e:   20

    num=4+2+8+空白2+4+1=21

    步骤二:

    num需要填充到24才能被max(4, 4)整除,所以sizeof(A) = 24

    clipboard[1]

    32位和64位其他区别见:

    http://www.cnblogs.com/sara-gcj/p/3324187.html

    32位    64位

    clipboard[2]

    clipboard[3]clipboard[4]

  • 相关阅读:
    POST和GET的区别
    Java设计模式6大原则
    JAVA23种工厂模式
    使用jsp实现用户登录请求
    MVC模式
    使用idea查询数据库内容
    mysql常见错误
    定义外键和建表原则
    CSS制作圆角边框
    2、JS的编写位置
  • 原文地址:https://www.cnblogs.com/lzhitian/p/4437932.html
Copyright © 2011-2022 走看看