今天被某gou的笔试第二题的迷之题意坑了,不过目前质量最高的试卷应该就是它了,有好多题目,理解一点,但是没有理解透彻,记录一下。
1.
<span style="font-size:18px;">class AA{
public:
union data{
struct tt{
int x, y;
}x2;
int x, y, z;
}x1;
};
int main()
{
AA a;
cout<<"x2::y = "<<&a.x1.x2.y<<endl;
cout<<"x2::x = "<<&a.x1.x2.x<<endl;
cout<<"x1::x = "<<&a.x1.x<<endl;
cout<<"x1::y = "<<&a.x1.y<<endl;
return 0;
}</span>
可以发现他们三者的指针是一样的,所以必然这三者的值是一样的。
2.
<span style="font-size:18px;">class A{
public:
void aa() {};
};
class B{
public:
void bb();
virtual void bbb(){};
};
class C: public B, public A{
public:
void cc(){}
};</span>
sizeof(A) = 1, sizeof(B) = 4, sizeof(C) = 4。
C中有A的,但是A不占内存。
3.
<span style="font-size:18px;">class A{
public:
static void aa() {};
virtual void aaa(){};
};
class B : public A{
public:
void bb();
void bbb(){};
};
int main()
{
B *c = NULL;;
return 0;
}</span>
此时虚表指针也置为NULL,所以无法调用虚函数,另外其余的函数都是类的函数,不是对象的函数,可以调用。