又刷了一套题
这些题都是百度、阿里巴巴、腾讯、网易、新浪等公司的面试原题,有一定的难度,不过确实相当有水平,可以通过做题来查漏补缺。
11.下面代码的输出是什么?
class A { public: A() { } ~A() { cout<<"~A"<<endl; } }; class B:public A { public: B(A &a):_a(a) { } ~B() { cout<<"~B"<<endl; } private: A _a; }; int main(void) { A a; //很简单,定义a的时候调用了一次构造函数 B b(a); }
答案:D
要搞懂构造和析构的循序
构造顺序:
12.以下程序的结果?
void foo(int *a, int *b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; } void main() { int a = 1, b = 2, c = 3; foo(&a, &b); foo(&b, &c); foo(&c, &a); printf("%d, %d, %d", a, b, c); }
答案:B
水题。。。
13.下列一段C++代码的输出是?
#include "stdio.h" class Base { public: int Bar(char x) { return (int)(x); } virtual int Bar(int x) { return (2 * x); } }; class Derived : public Base { public: int Bar(char x) { return (int)(-x); } int Bar(int x) { return (x / 2); } }; int main(void) { Derived Obj; Base *pObj = &Obj; printf("%d,", pObj->Bar((char)(100))); printf("%d,", pObj->Bar(100)); }
答案:B
printf("%d,", pObj->Bar((char)(100))); printf("%d,", pObj->Bar(100));第1句调用Base类的
int
Bar(
char
x)
函数
第2句调用Derived类的int
Bar(
int
x)
函数
14.C++类体系中,不能被派生类继承的有?
答案:A
构造函数可以被子类调用,但不能被子类继承,其它的,B、C、D都可以
15.下面有关malloc和new,说法错误的是?
答案:C
用过就知道,malloc需要#include<malloc.h>
16.下面有关类的静态成员和非静态成员,说法错误的是?
答案:C
关键在于分清 静态成员 和 非静态成员的区别
非静态成员必须实例化之后,才是一个实体
而静态成员和类的对象无关,它一直存在于内存中
17.下列代码的输出为:
class CParent { public: virtual void Intro() { printf( "I'm a Parent, " ); Hobby(); } virtual void Hobby() { printf( "I like football!" ); } }; class CChild : public CParent { public: virtual void Intro() { printf( "I'm a Child, " ); Hobby(); } virtual void Hobby() { printf( "I like basketball!\n" ); } }; int main( void ) { CChild *pChild = new CChild(); CParent *pParent = (CParent *) pChild; pParent->Intro(); return(0); }
答案:C
类中的函数都是虚函数,所以
CParent *pParent = (CParent *) pChild;
CParent *pParent = pChild;的输出结果是一样的
18.在32位小端的机器上,如下代码输出是什么:
char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08}; short *pshort = (short *)array; int *pint = (int *)array; int64 *pint64 = (int64 *)array; printf("0x%x , 0x%x , 0x%x , 0x%x", *pshort , *(pshort+2) , *pint64 , *(pint+2));
答案:B
我把int64改成_int64之后,编译器输出的结果是答案C
看了网友的解释,意思是把int64看成是普通的64位整形数,所以答案是B
19.switch(c)语句中,c不可以是什么类型()
答案:D
float存在精度问题
20.头文件中的 ifndef/define/endif 干什么用?
答案:C
水题,用过就知道
原文地址:http://blog.csdn.net/u011694809/article/details/45951429