本质
class是一种特殊的struct
在内存中class依旧可以看作变量的集合
class与struct遵循相同的内存对齐规则
class中的成员函数与成员变量是分开存放的
每个对象有独立的成员变量
所有对象共享类中的成员函数
例1:
#include <iostream>
#include <string>
using namespace std;
class A
{
int i;
int j;
char c;
double d;
public:
void printf()
{
cout<< "i = " << i << ","
<< "j = " << j << ","
<< "c = " << c << ","
<< "d = " << d << endl;
}
};
struct B
{
int i;
int j;
char c;
double d;
};
int main()
{
A a;
cout<<"sizeof(a)="<<sizeof(a)<<endl;
cout<<"sizeof(A)="<<sizeof(A)<<endl;
cout<<"sizeof(B)="<<sizeof(B)<<endl;
a.printf();
B* p = reinterpret_cast<B*>(&a);
p->i = 100;
p->j = 220;
p->c = 'C';
p->d = 3.14;
a.printf();
return 0;
}
输出:
sizeof(a)=20
sizeof(A)=20
sizeof(B)=20
i = 134515168,j = -1079784728,c = �,d = 4.85968e-270
i = 1,j = 2,c = c,d = 3
delphi@delphi-vm:~$
delphi@delphi-vm:~$ g++ test.cpp
delphi@delphi-vm:~$ ./a.out
sizeof(a)=20
sizeof(A)=20
sizeof(B)=20
i = 134515168,j = -1078963720,c = �,d = 4.85968e-270
i = 100,j = 220,c = C,d = 3.14
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。