c++笔试题(1)

    技术2022-05-19  25

    多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

        虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键。

     

    main主函数执行完毕后,是否可能会再执行一段代码?

     

     

     

    #include <stdlib.h> int atexit(void (*function)(void)); #include <stdlib.h> #include <stdio.h> void fn1( void ); int main( void ) { atexit(fn1); printf( "This is executed first./n" ); } void fn1() { printf( "next./n" ); }

     

    一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

    在子类的空间里,有没有父类的这个函数,或者父类的私有变量? (华为笔试题)

    答案:只要基类在定义成员函数时已经声明了virtue关键字,在派生类实现的时候覆盖该函数时,virtue关键字可加可不加,不影响多态的实现。子类的空间里有父类的所有变量(static除外)

     

    请编写一个 C 函数,该函数将给定的一个整数转换成字符串

    void itoa_m(int num, char* pval) { char strval[100] ; int i, j; int val0 = 0; int val1 = 0; val0 = num; for(i=0; i<100; i++) { val1 = val0 % 10; //取余,个位数 val0 = val0 / 10; //取整,右移 strval[i] = val1 + 48; //数字 转换为字符字符,类似(char)var_ if(val0 < 10) { i++; strval[i] = val0 + 48; break; } } //将生产字符串数组倒置 for(j=0; j<=i; j++) { pval[j] = strval[i-j]; } pval[j] = '/0'; }

     

     

    请编写一个 C 函数,该函数将给定的一个字符串转换成整数

    int atoi_m(char* str) { int num = 0; while(*str != '/0') { int digit = *str - 48; num = num*10 - digit; str = str+1; } }

     

     

    unsigned int bitone( char n) { unsigned int num = 0; unsigned int var_ = 0; for(int i = 0 ; i< 8; i++) { var_ = n >> i; var_ = var_ & 0x01; if(var_) num++; } return num; }

     

     


    最新回复(0)