关于class和struct的认知.

花了几周的时间看了<<C++ Primer>>并模仿了点代码,感觉C++与C的关系就像vimvi的关系.扩展了C,但是完完全全的兼容C.

总结了两者间的差异:
– C++中的class关键字完全可以当作struct用,但因为它比struct多出的功能,又有些微的不同.
– 基于class,C++有了内联inline,当然也可以不限于class中使用.
– 定义在类中的成员函数缺省都是内联的,并且内联函数不可过于复杂,内联函数不能使用循环语句和递归.
inline仅是一个对编译器的建议,如果编辑器认为函数过于复杂,则会放弃内联.
– 基于class,C++有了多态,继承,虚继承,虚函数,纯虚函数.

class的数据成员在内存中的布局不一定是数据成员的声明顺序,C++只保证处于同一个access section的数据成员按照声明顺序排列.

在C++中,class和struct做类型定义是只有两点区别:
– 默认继承权限不同,class继承默认是private继承,而struct默认是public继承.
– class还可用于定义模板参数,像typename.但是关键字struct不能同于定义模板参数.

C++保留struct关键字,原因:
– 保证与C语言的向下兼容性,C++必须提供一个struct
– 且为了百分百地保证与C语言中的struct的兼容性,把C++中的最基本的对象单元规定为class而不是struct,就是为了避免各种兼容性要求的限制.
– 对struct定义的扩展使C语言的代码能够更容易的被移植到C++中.