【发布时间】:2014-08-25 16:57:53
【问题描述】:
class SomeClass
{
int classMember;
public:
int GetMember();
bool IsPositive();
};
int SomeClass::GetMember()
{
return classMember;
}
bool SomeClass::IsPositive()
{
int val = GetMember(); //Case#1. Accessing value using get method
int val = classMember; //Case#2. Accessing value directly
return (val > 0);
}
问题:使用案例#1 是否比案例#2 有任何优势,反之亦然?与直接使用成员相比,使用 get 方法是否有任何开销(即使是最小的)?
【问题讨论】:
-
调用getter函数可能有一些微小的开销,因为除了访问成员变量之外,还需要构造函数并将其扔到堆栈上。此外,您应该只使用
return (val > 0);,而不是您在那里占用 6 行的喧嚣。 -
给定一个合理的编译器,执行时应该没有开销。但是,缺乏可读性会带来更大的开销。
-
拆开看看就知道了……
-
@Jerry Coffin 我同意。
return (classMember > 0);比return (GetMember() > 0);更具可读性 -
这只是冰山一角。考虑将两个数字相加:
a.member = b.member + c.member与a.set_member(b.get_member() + c.get_member())——甚至是a.set_member(b.add_values(b.get_member(), c.get_member())。