1.下面的代码有什么问题?
class A
{
public:
A() { p=this; }
~A() { if(p!=NULL) { delete p; p=NULL; } }
A* p;
};
答:
会引起无限递归 //为什么呢?请具体解释下
---------------------------------------------------
2.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数
//16位的系统下,
int i = 65536;
cout << i; // 输出0;???
int i = 65535;
cout << i; // 输出-1;???
32位的系统下,
int i = 65536;
cout << i; // 输出65536;
int i = 65535;
cout << i; // 输出65535;
16位系统的整形的范围是多少到多少?
输出0,可以理解,但是输出-1的话就不好理解?具体解释下吧。
-----------------------------------------------
3.
class A
{
char a;
int b;
double c;
};
cout<<"A :"<<sizeof(A)<<endl;//16???
空类是1;
只有一个char a 是1;
只有一个int b 是8?怎么回事?
只有一个double c 是8;
三个合起来是16???
-----------------------------------------------
4.
class A
{
virtual void func1();
void func2();
}
Class B: class A
{
void func1(){cout << "fun1 in class B" << endl;}
virtual void func2(){cout << "fun2 in class B" << endl;}
}
A, A中的func1和B中的func2都是虚函数.
B, A中的func1和B中的func2都不是虚函数.
C, A中的func2是虚函数.,B中的func1不是虚函数.
D, A中的func2不是虚函数,B中的func1是虚函数.// 这个是对的吧,B中的func1不是继承了A了吗?
答:
A
--------------------------------------
5.试编写函数判断计算机的字节存储顺序是开序(little endian)还是降序
bool IsBigendian()
{
unsigned short usData = 0x1122;
unsigned char *pucData = (unsigned char*)&usData;
return (*pucData == 0x22);
}
是不是内存高位存了0x11,低位存了0x22,在转换为unsigned char的时候,只截取了低位的0x22?