class ABC{
public :
int a;
public :
int getData(){
return a;
}
}
void main()
{
ABC abc;
cout<< abc.a; //1
cout<<abc.getData();//2
}
现在,如果我正在访问变量"a"
,在这种情况下编译器花费更少的时间来访问'a'
。
我猜第一种情况但不确定。
答案 0 :(得分:1)
这两种方法并不严格相同:
关于课程表现#1应该更快,因为不涉及复制,但大多数现代编译器将应用复制省略来删除正在创建的额外副本。
相反,您应该考虑在您的组织/机构中遵循编码指南的统一性。
答案 1 :(得分:1)
这是所有编码风格。拥有私有成员只是一种安全措施,因此任何外部实体都无法直接访问它并对其进行修改(声明用作安全屏障的变量const
的相同概念)。公共访问器是用于访问成员值的函数,公共修饰符用于通过函数更改值。它只是编码惯例。由于没有复制,因此直接传递成员而不是函数会更快。
答案 2 :(得分:0)
我会这样说:
如果访问器中除了简单地设置/返回变量之外还有其他内容(例如范围检查),那么变量应该绝对是私有的。这是确保实际执行此附加代码的唯一方法。
如果您只需要一个访问者,因为您不希望变量可查询或可选,那么该变量也应该是私有的。
如果你要定义一个vanilla getter和setter,我认为,将变量公之于众并忘记访问器一样安全。无论如何,这个变量都是公共的。在这种情况下,访问器只是冗余代码,因此不应该膨胀您的代码。之后很容易将公共变量设为私有,因为编译器将尽职地列出您需要调整的每一行代码。
简而言之:默认情况下使用私有变量,并对你编写的每个访问器三思而后行,因为它会在封装中打一个洞。