zoukankan      html  css  js  c++  java
  • 20180315 代码错题(12)

    观察下面一段代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class ClassA
    {
    public:
        virtual ~ ClassA(){};
        virtual void FunctionA(){};
    };
    class ClassB
    {
    public:
       virtual void FunctionB(){};
    };
    class ClassC : public ClassA,public ClassB
    {
        public:
    };
      
    ClassC aObject;
    ClassA* pA=&aObject;
    ClassB* pB=&aObject;
    ClassC* pC=&aObject;

    关于pA,pB,pC的取值,下面的描述中正确的是:

    pA,pB,pC的取值相同.
    pC=pA+pB
    pA和pB不相同
    pC不等于pA也不等于pB

    答案 C
    注意到题目中class ClassC : public ClassA,public ClassB,即A在前,B在后,所以
     
    
    
    如果我们输出三个指针的值。
    上面的代码在我的电脑上输出
    0x7fff502f5aa8

    0x7fff502f5ab0

    0x7fff502f5aa8

     
    可以看到pA和pC是相同的。
    所以选择C。
     
    实际上,在这个情况下,子类的指针和第一个基类的指针应该是一样的,和第二个基类是不一样的。


  • 相关阅读:
    vmware fusion和mac共享目录
    安卓linker源码阅读01
    sublime text 快捷键
    eclipse使用经验汇总
    递归池:
    ubuntu下adb红米
    蛋疼问题汇总you must restart adb and eclipse
    JNI
    ARM寻址
    了解装饰器
  • 原文地址:https://www.cnblogs.com/kxzh/p/8577078.html
Copyright © 2011-2022 走看看