您的位置:首页 > 其它

第十三章 13.6.3节练习

2014-09-13 12:38 127 查看
练习13.55

为你的strBlob添加一个右值引用版本的push_back.

解答:

这里可以参照482页中给出的例子进行添加,方法几乎相同,不过不牵扯到内存的分配。

练习13.56

如果sorted定义如下,会发生什么:

Foo Foo::sorted() const & {
  Foo ret(*this);
  return ret.sorted();
}


解答:

会发生无限递归的情况。

练习13.57

如果sorted定义如下,会发生什么

Foo Foo::sorted() const & {return Foo(*this).sorted();}


解答:

强制将*this类型转换会产生一个右值,右值调用右值版本的sort,

结果是正常运行。

练习13.58

编写新版本的Foo类,其sorted函数中有打印语句,测试这个类,来验证你对前两题的答案是否正确。

解答:

这个将书中的Foo类改一下就行了,在Vs2013的测试中,编译阶段会报警告

“如递归所有控件路径,函数将导致运行时堆栈溢出”,无限递归。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: