4 回答
TA贡献1799条经验 获得超8个赞
public
, protected
private
.
class Base { public: int publicMember; protected: int protectedMember; private: int privateMember;};
所有意识到的 Base
也意识到 Base
含 publicMember
.只有孩子(和他们的孩子)知道 Base
含 protectedMember
.除了 Base
意识到 privateMember
.
下一步:
Base
Child
Base
.
如果继承是 public
,意识到的一切 Base
和 Child
也意识到 Child
继承自 Base
.如果继承是 protected
,只有 Child
,以及它的孩子们,都知道他们是从 Base
.如果继承是 private
,除了 Child
意识到了遗传。
TA贡献1830条经验 获得超3个赞
static_cast
公众
是-遗产。按钮是一个窗口,在任何需要窗口的地方,也可以传递一个按钮。 class button : public window { };
受保护
受保护-实施-条件。很少有用。用于 boost::compressed_pair
若要从空类派生并使用空基类优化来节省内存(例如,下面的示例不使用模板来保持当前状态): struct empty_pair_impl : protected empty_class_1 { non_empty_class_2 second; };struct pair : private empty_pair_impl { non_empty_class_2 &second() { return this->second; } empty_class_1 &first() { return *this; // notice we return *this! }};
私
已实施-在-条件下。基类的使用仅用于实现派生类。对特征有用,如果大小重要(只包含函数的空特征将使用空基类优化)。经常 安全壳不过,这是更好的解决办法。字符串的大小是非常重要的,所以这里经常使用它 template<typename StorageModel>struct string : private StorageModel {public: void realloc() { // uses inherited function StorageModel::realloc(); }};
公众
骨料 class pair {public: First first; Second second;};
存取器 class window {public: int getWidth() const;};
受保护
为派生类提供更好的访问 class stack {protected: vector<element> c;};class window {protected: void registerClass(window_descriptor w);};
私
保留实现细节 class window {private: int width;};
TA贡献1818条经验 获得超11个赞
>基类的公共成员将是公共的(通常是默认的) 受保护的->基类的公共成员将受到保护 >基类的公共成员将是私有的
- 4 回答
- 0 关注
- 757 浏览
添加回答
举报