正常或通过函数访问类的变量

时间:2013-07-24 05:51:14

标签: c++ class

class ABC{
     public :
      int a;
     public :
      int getData(){
        return a;
      }
     }
     void main()
     { 
       ABC abc;
       cout<< abc.a;    //1
       cout<<abc.getData();//2
     }

现在,如果我正在访问变量"a",在这种情况下编译器花费更少的时间来访问'a'。 我猜第一种情况但不确定。

3 个答案:

答案 0 :(得分:1)

这两种方法并不严格相同:

  1. 直接访问该成员会在
  2. 时读取成员本身的值
  3. get方法返回变量的副本,因此您可以从副本中读取。
  4. 关于课程表现#1应该更快,因为不涉及复制,但大多数现代编译器将应用复制省略来删除正在创建的额外副本。

    相反,您应该考虑在您的组织/机构中遵循编码指南的统一性。

答案 1 :(得分:1)

这是所有编码风格。拥有私有成员只是一种安全措施,因此任何外部实体都无法直接访问它并对其进行修改(声明用作安全屏障的变量const的相同概念)。公共访问器是用于访问成员值的函数,公共修饰符用于通过函数更改值。它只是编码惯例。由于没有复制,因此直接传递成员而不是函数会更快。

答案 2 :(得分:0)

我会这样说:

  • 如果访问器中除了简单地设置/返回变量之外还有其他内容(例如范围检查),那么变量应该绝对是私有的。这是确保实际执行此附加代码的唯一方法。

  • 如果您只需要一个访问者,因为您不希望变量可查询或可选,那么该变量也应该是私有的。

  • 如果你要定义一个vanilla getter和setter,我认为,将变量公之于众并忘记访问器一样安全。无论如何,这个变量都是公共的。在这种情况下,访问器只是冗余代码,因此不应该膨胀您的代码。之后很容易将公共变量设为私有,因为编译器将尽职地列出您需要调整的每一行代码。

简而言之:默认情况下使用私有变量,并对你编写的每个访问器三思而后行,因为它会在封装中打一个洞。