1. 关键词的困扰函数
(1)关键词 struct 自己并不必定要象征其后随之声明的任何东西。布局
(2)能够使用 struct 代替 class,但仍声明 public、protected、private等,以及一个彻底的 public 接口,virtual functions,单一继承、多重继承、虚继承等。spa
(3)C 所支持的 struct 和 C++ 所支持的 class 间,有一个观念上的重要差别。关键词自己不提供这种差别,这两种声明的观念上的意义取决去对声明自己的检验。code
(4)struct 关键词的使用实现了 C 的数据萃取观念,而 class 关键词实现的是 C++ 的ADT 观念,则“不一致性”是一种错误的语言用法。例如:排序
//这两个声明会形成矛盾的存储空间 static int foo; extern int foo;
(5)class 的真正特性是由声明的自己(declaration body)来决定的。继承
2. 策略性正确的 struct接口
(1)C++ 中凡处于同一个 access section 的数据,要保证其声明次序出如今内存布局中,而被放置在多个 access sections 的数据。排序次序则不必定。内存
(2)组合,而非继承,才是把 C 和 C++ 结合在一个的惟一可行方法(conversion 运算符),例如:it
struct C_point { }; class CPoint { public: operator C_point() { return m_cpoint; } private: C_point m_cpoint; };
(3)C 的 struct 在 C++ 中的一个合理用途:须要传递“一个复杂的 class object 的所有或部分”到某个 C 函数中去,struct 能够把数据封装起来,并保证和 C 有兼容的空间布局。(前提是在组合的状况下)io