Nói rằng tôi có các lớp:Khi kế thừa từ một lớp cơ sở, điều gì sẽ xảy ra với các lớp lồng nhau?
class Base
{
public:
class Foo { ... };
...
};
Sau đó, một lớp khác xuất phát từ cơ sở:
class Derived : public Base
{
// no mention or redefinition of nested class "Foo" anywhere in "Derived"
};
này có nghĩa là chúng ta bây giờ có một khác biệt Derived::Foo
, hoặc là Derived::Foo
chính xác giống như Base::Foo
?
Đây là một bước ngoặt về tình huống này: nếu ai đó ném một phiên bản Derived::Foo
thì sao? nó sẽ được bắt gặp trong kịch bản này:
catch (const Base::Foo &ex)
{
// would this also catch an instance of Derived::Foo?
}