当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 1)最近看了essential c++,书中提到memberwise initialization的问题(注1),然后又看到后面提到copy assignment operator(= overloading方面),看完书后我得出一结论,不知道对不对(书中没有明示),想让大家帮我看一下: 如果class中没定义copy assigment operator的重载,当出现”注1“的情形时,就......
 ·怎样向水晶报表传递参数亚    »显示摘要«
    摘要: 怎样向水晶报表传递参数亚? ......


c++学习小疑难有关返回值,有关友元函数

1)先说说返回值,我想问的是返回class型别时的情况,请看下面代码:  
  class   Triangular{  
  public:  
  //其他接口略  
  Triangular_iterator   begin()   const  
  {  
  return   Triangular_iterator(_beg_pos);  
  }  
   
  friend   class   Triangular_iterator;  
  private:  
  int   _beg_pos;  
   
  }  
   
  我感觉上面的return后面的表达式,好像我们一般叫做强制型别转换,但是一个int怎么转成class呢?所以我想Triangular_iterator(_beg_pos)这个形式是不是把_beg_pos传给了Triangular_iterator类的constructor,然后由c++构造了一个class   object,最后以传值返回?   不知道我的分析对否?  
   
  2)我看到这么一句话:"友谊关系的建立,通常是为了效率考虑."  
  是不是说如果声明一函数为friend,c++会为函数加上inline?  
  如果声明一class为friend,c++会为其成员函数加上inline?  
  不知道我说得对不对?

NO.1   作者: n5

1.你说的是对的,在类型转换是确实构造了一个临时对象  
  2.friend和inline根本就是两回事,friend解决效率问题是因为它避免了调用类的接口函数带来的开销  
  而inline相当于一个宏,节省了调用函数是保存现场,调整寄存器,恢复现场等的开销。  
  两者最终都是避免了函数调用带来的开销,但本质是不一样的

NO.2   作者: lx_cyh

>>"因为它避免了调用类的接口函数带来的开销"  
  friend   可以直接操作类的private   member,而不需要通过   public   member   function   来访问,自然节省了开销


 ·关于对话框的打印    »显示摘要«
    摘要: 我想要一个打印对话框的类库,使打印对话框就和打印视图一样简单。不知大家有何建议? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE