最近读的书上有个范例程式码
https://onlinegdb.com/f93sPV8B2
书上有给Turbo C++ 和Symantec C++ 的run
(那本书蛮老了)
总之turbo是在104行呼叫reserve函数的时候有呼叫copy constructor
而symantec没有(查了一下才知道rvo,应该没错(?))
没有rvo的版本因为函数return后tmp就被解构了所以c3的str没办法正确印出
书上有提供的解法是我在class里定义(目前是用标注)的=运算子多载
问题点1.
没有rvo(turbo)的版本,应该是要用 Charstr operator=(Charstr inobj)
?(即不用reference)
因为reverse 的传回值不是左值(?
因为我用的编译器是有rvo的所以也不知道这样对不对...
问题点2.
我目前用的是环境dev c++,拿这个程式去编译会是有rvo
试着把注明里的部分加上去看看
结果过不了...
用
Charstr operator=(Charstr inobj)
也过不了
请问这是为什么呢?
新手无知...不好意思,谢谢