关于公有成员变量的一点看法

在面对OO编程的时候,所有的成员变量都不应该声明为public,但是也有些人为了操作方便,或者甚至有人认为直接对类的成员进行存取的时候效率要好过通过函数存取。例:

class ExampleA
{
public:
 int _A;
 int GetA() const{ return _A;}
 void Add(int A){_A += A;}
};

ExampleA aa.

1, for(i=0; i<10000000; i++)
 {
  a._A += i;
 }

2, for(i=0; i<10000000; i++)
 {
  a.Add(i);
 }

在未优化的代码1的效率要比2高。而在优化过后的代码,1和2的效率是一样快的,现在的编译器大部分都能

做到这一点的优化。(详见Inside The C++ Object Code).所以说我们使用inline Get & Set函数对内部成员

变量进行存取,是不用担心他的效率问题的。

可能会有人觉得在类ExampleA中的SetA函数中所使用的参数是int而不是使用const int&,这样子也会对效率

有影响,不过在Effective中有一节讲到Prefer pass-by-reference to pass-by-value.在这一节的最后几句讲到

Finally, the brutal fact of the matter is that references are almost always implemented as pointers, so passing something by reference usually means really passing a pointer. As a result, if you have a small object — an int, for example — it may actually be more efficient to pass it by value than to pass it by reference.

所以说,对于int这种C++自带的简单类型,使用int的效率比使用const int&的效率并不会慢吧。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值