class BaseClass {};
namespace { // anonymous
class SubClass : BaseClass {};
}
BaseClass* somefunc() {
return new SubClass();
}
由于SubClass位于匿名命名空间中,因此文件外部的任何内容都无法访问它,但somefunc不在匿名空间中,因此可以访问。如果somefunc返回anonynmous类实例会发生什么?
答案 0 :(得分:1)
您的函数返回BaseClass*
。由于该类无法访问,因此不同源文件中的任何内容都无法将其强制转换为SubClass*
。在这种情况下,调用者仅限于将指针用作BaseClass
指针。