1、C++的类对象在内存布局上与结构体相同; 2、成员变量和成员函数在内存中分开存放的; 3、访问权限关键字在运行时失效; 4、调用成员函数是对象地址作为参数隐式传递。
实例分析:
#include <iostream> #include <string> #include <sstream> using namespace std; class Parent { protected: int mi; int mj; public: }; class Child_A: public Parent { int mk; public: Child_A(int i, int j, int k) { mi = i; mj = j; mk = k; } void print() { cout << "mi = ;" << mi << "mj = ;" << mj << "mk = ;" << mk << endl; } }; struct Test { int mi; int mj; int mk; }; int main() { cout << "sizeof(Parent) = " << sizeof(Parent) << endl; cout << "sizeof(Child_A) = " << sizeof(Child_A) << endl; Child_A c(1, 2, 3); Test* p = reinterpret_cast<Test*>(&c); c.print(); p->mi = 10; p->mj = 20; p->mk = 30; cout << endl; c.print(); return 0; }实例分析2;
#include <iostream> #include <string> #include <sstream> using namespace std; class Parent { protected: int mi; int mj; public: virtual void print() { cout << "mi = ;" << mi << "mj = ;" << mj << endl; } }; class Child_A: public Parent { int mk; public: Child_A(int i, int j, int k) { mi = i; mj = j; mk = k; } void print() { cout << "mi = ;" << mi << "mj = ;" << mj << "mk = ;" << mk << endl; } }; struct Test { void* p; int mi; int mj; int mk; }; int main() { cout << "sizeof(Parent) = " << sizeof(Parent) << endl; cout << "sizeof(Child_A) = " << sizeof(Child_A) << endl; Child_A c(1, 2, 3); Test* p = reinterpret_cast<Test*>(&c); c.print(); p->mi = 10; p->mj = 20; p->mk = 30; cout << endl; c.print(); return 0; }