百问百答 > 2.代码分析题 >
代码1
#include
using namespace std;
class Text
{
public:
Text()
{
cout<<"constructor of TEXT"<
};
Text a;
int main()
{
cout<<"main() start"<
return 0;
}
答案【
constructor of TEXT
main() start
constructor of TEXT
】
百问百答 > 2.代码分析题 >
代码2
#include
using namespace std;
int main()
{
int a=1;
int b=10;
int *p=&a;
int *&pa=p;
(*pa)++;
cout<<"a="<
cout<<"b="<
cout<<"*p="<<*p<
pa=&b;
(*pa)++;
cout<<"a="<
cout<<"b="<
cout<<"*p="<<*p<
}
答案:
【
a=2
b=10
*p=2
a=2
b=11
*p=11
】
百问百答 > 2.代码分析题 >
代码3
#include
class A
{
public:
int i;
short j;
};
class B
{
public:
int i;
short j;
char ch;
};
class C
{
public:
int i;
int ii;
short j;
char ch;
char chr;
};
class D
{
int i;
int ii;
int iii;
short j;
char ch;
char chr;
};
int main()
{
cout<<"sizeof(A)"<
答案:【
sizeof(A)8
sizeof(B)8
sizeof(C)12
sizeof(D)16】
百问百答 > 2.代码分析题 >
代码4
#include
using namespace std;
class Base
{
private:
int a;
public:
Base(int x):a(x){}
void print()
{
cout<<"base"<
};
class Derived:public Base
{
private:
int b;
public:
Derived(int x):Base(x-1),b(x){}
void print()
{
cout<<"derived"<
};
class A
{
private:
int a;
public:
A(int x):a(x){}
virtual void print()
{
cout<<"A"<
};
class B:public A
{
private:
int b;
public:
B(int x):A(x-1),b(x){}
virtual void print()
{
cout<<"B"<
};
int main()
{
Base obj1(1);
cout<
cout<
cout<
cout<
}
答案【4 8 8 12
PS:普通函数不占内存,只有虚函数会占有一个指针大小的内存,原因是系统用一个指针维护这个类的虚函数表;】
百问百答 > 2.代码分析题 >
代码5
#include
using namespace std;
class A{};
class B{};
class C:public A,public B
{
};
class D:virtual public A
{
};
class E:virtual public A,virtual public B
{
};
class F
{
public:
int a;
static int b;
};
int F::b=10;
int main()
{
cout<<"sizeof(A):"<
}
答案:【
sizeof(A):1
sizeof(B):1
sizeof(C):1
sizeof(D):4
sizeof(E):8
sizeof(F):4
PS:静态成员的空间不在类的实例中。而是像全局变量一样在静态存储区中,被类共享。
】
百问百答 > 2.代码分析题 >
代码6
#include
#define SQR(x)(x*x)
int main()
{
int a,b=3;
a=SQR(b+2);
printf(“a=%d”,a);
return 0;
}
答案【11】
百问百答 > 2.代码分析题 >
代码7
int func(x)
{
int count x = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999 countx=?
答案:【8】
百问百答 > 2.代码分析题 >
代码8
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句 printf(“%d”,sizeof(struct date)+sizeof(max));的执行结果是:___
答案:【52】
百问百答 > 2.代码分析题 >
代码9
#include
using namespace std;
class A
{
public:
A(){doSth();}
virtual void doSth(){cout<<"I am A"<
class B:public A
{
public:
virtual void doSth(){cout<<"I am B"<
int main()
{
B b;
return 0;
}
答案:【I am A】
百问百答 > 2.代码分析题 >
代码10
分析以下代码 ,指出错误
#include
using namespace std;
int main()
{
int a=1;
int b=2;
int &c;
int &b=a;
&d=b;
int* p;
*p =5;
return 0;
}
答案:
错误①: int &c;
声明一个引用类型的变量C,但是没有初始化。引用类型的变量在声明时同时必须初始化;
②: &d=b;引用只能在声明的时候被赋值,以后都不能在把该引用作为其他变量的别名
③:*p=5;p没有被初始化,p是个野指针,对野指针赋值非常危险,会导致程序运行时崩溃;