⚠️ 让常量对象也调得动
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)main 里那个对象是 const 的。
🔴 每建一个就记一笔
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)built_ 是**所有对象共用的一份**,构造时给它加一。
🔴 一个大对象传值给函数,代价是什么
把一个装了很多东西的对象**按值**传给函数,代价是【0】。
⚠️ 这个参数写法什么意思
参数写成 const std::string &s,表示【0】。
什么时候反而该传值
下面几种参数里,**传值更合适**的是【0】。
🔴 把拷贝次数数出来
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)⚠️ 这一节的拷贝计数**只数标准强制的那几种**(传值给函数、push_back 一个左值),**不数返回值和临时对象**——那些各编译器会省略得不一样。所以这些数
⚠️ 一个只能看,一个能动
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)一个只读的参数,一个可写的参数: #include <iostream> #include <string> /* const& 收
🔴 两个参数写反了,换回来
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)⚠️ 这一节的拷贝计数**只数标准强制的那几种**(传值给函数、push_back 一个左值),**不数返回值和临时对象**——那些各编译器会省略得不一样。所以这些数
⚠️ 让这次调用一份都别拷
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)⚠️ 这一节的拷贝计数**只数标准强制的那几种**(传值给函数、push_back 一个左值),**不数返回值和临时对象**——那些各编译器会省略得不一样。所以这些数
🔴 少了 const,整条链都断了
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)main 里那个对象是 const 的,report 收的也是 const 引用。