why const
https://www.geeksforgeeks.org/copy-constructor-argument-const/
最开始是想查一下为什么要用const
#include<iostream>
using namespace std;
class Test
{
/* Class data members */
public:
Test(Test &t) {
/* Copy data members from t*/}
Test() {
/* Initialize data members */ }
};
Test fun()
{
cout << "fun() Called\n";
Test t;
return t;
}
int main()
{
Test t1;
Test t2 = fun();
return 0;
}
下面也说了相关的问题
https://stackoverflow.com/questions/16956693/why-c-copy-constructor-must-use-const-object
You couldn’t create copies from temporary reference, because temporary objects are rvalue, and can’t be bound to reference to non-const.
下面说的是rvalue的问题
https://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/
这里面讲到了临时的值如果给了const 就会一直存续,我翻译的不太明白,可以自行看原文或者查一下相关的知识。我自己想了一下,应该是加了const 会存储在全局区,之前是在stack,用完就释放了(这里很可能不太对,希