为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我可以在私人类型上使用汽车?

为什么我可以在私人类型上使用汽车?

C++
千万里不及你 2019-07-10 15:33:27
为什么我可以在私人类型上使用汽车?我对下面的代码编译和运行(vc 2012&gcc4.7.2)感到惊讶。class Foo {     struct Bar { int i; };public:     Bar Baz() { return Bar(); }};int main() {     Foo f;     // Foo::Bar b = f.Baz();  // error     auto b = f.Baz();         // ok     std::cout << b.i;}这段代码编译得很好是正确的吗?为什么这是正确的?为什么我可以用auto在私有类型上,而我不能使用它的名称(如预期的那样)?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

访问控制应用于人名..与标准中的示例相比:

class A {
  class B { };public:
  typedef B BB;};void f() {
  A::BB x; // OK, typedef name A::BB is public
  A::B y; // access error, A::B is private}


查看完整回答
反对 回复 2019-07-10
  • 1 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信