博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.2 关键词所带来的差异
阅读量:7003 次
发布时间:2019-06-27

本文共 853 字,大约阅读时间需要 2 分钟。

hot3.png

1.    关键词的困扰

(1)关键词 struct 本身并不一定要象征其后随之声明的任何东西。

(2)可以使用 struct 代替 class,但仍声明 public、protected、private等,以及一个完全的 public 接口,virtual functions,单一继承、多重继承、虚继承等。

(3)C 所支持的 struct 和 C++ 所支持的 class 间,有一个观念上的重要差异。关键词本身不提供这种差异,这两种声明的观念上的意义取决去对声明本身的检验。

(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 运算符),例如:

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 有兼容的空间布局。(前提是在组合的情况下)

转载于:https://my.oschina.net/u/2250495/blog/352648

你可能感兴趣的文章