CSDN=>FAQ=>FAQ 展示
  • 问题内容:深度探索C++对象模型系列问题之二(2)
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=5252501
  • 所属论坛:C++ 语言     审核组:C/C++
  • 提问者:femalelover     解决者:steedhorse
  • 感谢:akirya steedhorse jixingzhong
  • 关键字:函数 调用 C/C++ 指针 C++ 语言 二进制 内存 拷贝 编译 定义 const type_info
  • 答案:

    2,按位拷贝是不是说按内存中一个bit一个bit位的拷贝. 比如说一个对象 A obj1 在内存二进制是(11...01) 那么如果 A obj2 = obj1 之后, 得到的 obj2的内存二进制也是(11...01)?

    3, vtbl的slot1为一个type_info指针, 这个指针好像在 ptr-->func()调用虚函数的过程中没有使用到, 而仅仅是用来作为向下转换时用的?

    ---------------------------------------------------------------

    其实就是用memcpy一下
    虚函数调用跟这个type_info没有任何关系的。
    ---------------------------------------------------------------

    反过来想,如果C++语言实现虚函数的动态绑定需要检测类型信息,那代价可就比调用一个一般的函数高很多了。这也不符合C++用较小的代价来动态函数绑定的设计初衷。
    而一旦那样的话,程序员很可能宁可自己通过手工机制来实现多态了。
    ---------------------------------------------------------------

    比如 typeid的返回是type_info类型。

      type_info类:这个类的确切定义是与编译器实现相关的,下面是《C++ Primer》中给出的定义(参考资料[2]中谈到编译器必须提供的最小信息量):

    class type_info {
    private:
    type_info(const type_info&);
    type_info& operator=( const type_info& );
    public:
    virtual ~type_info();
    int operator==( const type_info& ) const;
    int operator!=( const type_info& ) const;
    const char* name() const;
    };

  • 评价: 有价值 给朵鲜花(3) 无价值 扔个鸡蛋(1)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo