爱问知识人 爱问教育 医院库

函数,C ~帮看一下吧~不是很明白

首页

函数,C++~帮看一下吧~不是很明白

classItem_base{friendstd::istream&operator>>(std::istream&,Item_base&);friendstd::ostream&operator<<(std::ostream&,constItem_base&); *clone()const{returnnewItem_base(*this);} (conststd::string&book="",doublesales_price=0.0):isbn(book),price(sales_price){}std::stringbook()const{returnisbn;}//returnstotalsalespriceforaspecifiednumberofitems//derivedclasseswilloverrideandapplydifferentdiscountalgorithmsvirtualdoublenet_price(std::size_tn)const{returnn*price;}//nowork,butvirtualdestructorneeded//ifbasepointerthatpointstoaderivedobjectiseverdeletedvirtual~Item_base(){} ::stringisbn;//identifierfortheitem //normal,undiscountedprice};这里的clone()函数不太明白,Item_base(*this);没有匹配的构造函数呀?

提交回答
好评回答
  • 2018-03-29 12:36:34
    它使用的是默认的拷贝构造函数,即当你没有自定义拷贝构造函数时,编译器会自动生成一个拷贝构造函数,并且只进行浅拷贝(即完全把值给复制过来),这种拷贝方式,对于含有外援指针成员时,会造成指针悬挂的风险,不过这个类还好,没什么问题
    这个函数的意思就是以当前对象为样,返回一个指向完全一样的对象的一个指针,不过,使用这个函数克隆出的对象,不用时,需要释放,否则就会造成内存泄漏 
    

    蔡***

    2018-03-29 12:36:34

类似问题

换一换
  • 互联网 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):