函数在匿名空间中返回类时会发生什么?

时间:2015-11-20 00:40:49

标签: c++ namespaces

class BaseClass {};

namespace { // anonymous
  class SubClass : BaseClass {};
}

BaseClass* somefunc() {
  return new SubClass();
}

由于SubClass位于匿名命名空间中,因此文件外部的任何内容都无法访问它,但somefunc不在匿名空间中,因此可以访问。如果somefunc返回anonynmous类实例会发生什么?

1 个答案:

答案 0 :(得分:1)

您的函数返回BaseClass*。由于该类无法访问,因此不同源文件中的任何内容都无法将其强制转换为SubClass*。在这种情况下,调用者仅限于将指针用作BaseClass指针。