class A
{
public:
void *p1;
private:
void *p2;
protected:
void *p3;
};
class B: public A {};
那么sizeof(B)的数值是()linux 32位下的结果,供大家参考:
#include <stdio.h>
class A
{
public:
void *p1;
int a;
int b;
private:
void *p2;
int c;
int d;
protected:
void *p3;
int e;
int f;
};
class B: public A {};
class C: private A {};
class D: protected A {};
int main()
{
int ret_public = sizeof(B);
int ret_private = sizeof(C);
int ret_protected = sizeof(D);
printf("public_ret = %d\n", ret_public);
printf("private_ret = %d\n", ret_private);
printf("protected_ret = %d\n", ret_protected);
return 0;
}
#include <iostream> class A { public: A() : p1(1), p2(2), p3(3) {} public: int p1; private: int p2; protected: int p3; }; class B: public A {}; int main() { A a; std::cout << *(int *)&a << std::endl; std::cout << *((int *)&a + 1) << std::endl; std::cout << *((int *)&a + 2) << std::endl; B b; std::cout << *(int *)&b << std::endl; std::cout << *((int *)&b + 1) << std::endl; std::cout << *((int *)&b + 2) << std::endl; }