【问题标题】:Public member of class and its access类的公共成员及其访问
【发布时间】:2015-07-11 05:37:13
【问题描述】:

我们可以在程序中声明但不是该类成员的函数中使用公共数据成员或成员函数吗?

【问题讨论】:

  • 是的,您可以通过该类的对象

标签: c++ c++11 dev-c++


【解决方案1】:

任何函数都可以访问类的公共数据成员。

类的公共成员函数可以被任何函数调用。

这就是让班级成员public的目的。

当然,还有其他条件(例如,调用非静态公共成员函数的函数通常需要访问类的实例,即对象)。如果不满足这些条件,通常会阻止代码编译或导致未定义的行为——但这与成员是否为public 的问题无关。

【讨论】:

    【解决方案2】:

    这可以通过使用友元函数的概念来实现。任何不是该类成员函数的函数,那么我们可以使用friend关键字将该函数声明为朋友函数。现在通过使用这个友元函数,我们可以在该类的对象的帮助下访问所有私有的、受保护的、公共的数据成员。

    【讨论】:

      【解决方案3】:

      如果有问题的非成员函数有一个可以调用成员函数的对象,那么是的——这就是公共成员的想法。例如:

      class X
      {
        public:
          void f() { }
          int n_;
      };
      
      int main()
      {
          X x; // an actual object/variable of type X
          x.f(); // can access public members
          x.n_ = 3;
      }
      

      【讨论】:

      • @goGud:这不是“C++ 中的规则”,只是某人过于严格的风格指南。
      • @goGud:这是人们阅读的合理指南,尽管将其称为“规则”会使它听起来像是标准规定的……这当然取决于程序员。干杯。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2010-10-14
      • 2019-05-01
      • 2012-10-06
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多