遗产的合法性混淆

时间:2013-10-25 16:07:32

标签: c++ inheritance

我是C ++的新手,我的问题可能很愚蠢:

我们将A,B和C类定义如下:

class A {
public:
    typedef Resouce Money;
};

class B
   :public A {
};

class C {
public:
    typedef B::Money MyMoney;
};

这有效吗?我很困惑,因为“金钱”没有在B组中明确定义。

提前致谢!

2 个答案:

答案 0 :(得分:2)

这是有效的,是的。

虽然B没有明确定义Money,但它已公开声明(: public A)它继承自A。此外,由于AMoney的定义是公开的,因此BMoney作为公共成员。

答案 1 :(得分:0)

公共(或受保护)基类的所有公共成员和受保护成员都是派生类的可访问成员。 “成员”包括成员变量,成员函数和成员类型,“类型”包括类型别名和新定义的类型。

所以成员A::Money的确也可以B::Money