zoukankan      html  css  js  c++  java
  • C++ 实践总结

    
    1. 对于一个应用程序而言,静态链接库可能被载入多次,而动态链接库仅仅会被载入一次。

    2. Gameloft面试之错误一

    Event:

    面试官说例如以下程序是能够链接通过的.

    class Base

    {

    Public:

        Base(void)

        {

          this-> initialize();

    }

         virtual void initialize(void) = 0; 

    };

     

    class Derived : public Base

    {

    Public:

          virtualvoid initialize(void)

          {

          }

    };

     

    Base* obj = new Derived;

     

    In fact:

      链接根本不能通过,原因:虚函数表是在构造函数调用完毕之后才完毕初始化的。

     

    Summary:

    虚拟函数表在对象创建完毕后才被初始化,而在构造基类构造函数去掉用虚函数时是无法调用到派生类实现接口的:例如以下样例链接定会失败(不管gcc还是vs编译器)(总结: 牢记自己曾今的研究):

     

    1. Gameloft面试之错二

    Event:

    面试官说例如以下写法是可通过编译的:

    class A

    {

         const char* func(const char*const str) const

         {

            char* temp = str;

         }

    };

    In fact:

      编译时不能通过的: “const char*”类型的值不能用于初始化”char*”类型实体

    Summary:

       应坚定地相信自己自己通过科学做出的推断

     

    1. Gameloft面试之错三

    Event:

        面试官说例如以下写法大多数编译器不支持

    void(ClassName::  *px)(void);

     

      In fact:

        实践证明,VSGCC编译器均支持该写法

     

      Summary

        该写法并未违背C++标准,应当被支持,至于除VS,GCC之外的编译器未曾了解.

     

    1. 数组指针的初始化及销毁(new/delete)操作:(gameloft面试后思考)

      int (*parr)[10] = (int(*)[10])( new int[10] );

      delete [] parr;

       

    2. 在多继承的时候,dynamic_cast返回nullptr的情况:

      现有2个基类: base1base2

      二级基类:    base3同一时候继承与base1, base2

      对于对于子类derived, 假设子类是非public继承与base3

      但用基类base2指针保存derived对象时,dynamic_cast转换基类base2指针

      base1指针,会失败返回nullptr

       

     

  • 相关阅读:
    Xcode11 Developer Tool中没了Application Loader
    iOS
    iOS
    UIView与CALayer的区别,很详细(基础教学拓展)转
    使pre的内容自动换行(转)小知识
    requirejs:模块加载(require)及定义(define)时的路径理解
    JS国际化网站中英文切换(理论支持所有语言)应用于h5版APP
    Tomcat8 配置APR模式
    Mongodb安装
    SecureCRT配色方案
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3762309.html
Copyright © 2011-2022 走看看