Dei*_*Dei 6 c++ optimization class c++11
我对技术物流很感兴趣.是否有任何优势,例如保存的内存等,来实现处理类的某些功能?
特别是,将操作符重载实现为自由函数(假设您不需要访问任何私有成员,即使这样,您也可以让他们使用非成员的朋友)?
每次创建对象时,是否为类的每个函数提供了不同的内存地址?
这个答案可能对您有所帮助:运算符重载:成员函数与非成员函数?. 通常,如果您需要在无法访问代码源的类上实现运算符(考虑s)或者左操作数不是类类型(例如),则自由函数是强制性的。如果您控制类的代码,则可以自由使用函数成员。stream
int
对于您的最后一个问题,不,函数成员是唯一定义的,并且使用对象内部表来指向它们。函数成员可以被视为具有隐藏参数的自由函数,该参数是指向对象的指针,即 与大致类似的原型大致o.f(a)
相同。f(&o,a)
f(C *this,A a);
关于使用非成员函数实现功能优于函数成员的情况,有各种文章.
例子包括
关于非成员如何改进封装的Scott Meyers("Effective C++","Effective STL"等书籍的作者):http: //www.drdobbs.com/cpp/how-non-member-functions-improve- encapsu/184401197
Herb Sutter在他的周大师系列#84"Monoliths Unstrung"中.基本上他提倡,当可以作为成员或非成员非朋友实现功能时,更喜欢非成员选项. http://www.gotw.ca/gotw/084.htm
归档时间: |
|
查看次数: |
1037 次 |
最近记录: |