繁体   English   中英

将所有常量定义为常量引用?

[英]Define all constants as const references?

是否有定义常量的最佳实践? 这是一个小例子:

#include <vector>

struct mystruct {
    std::vector<double> data;
    mystruct() : data(100000000,0) {};
};

int main(){
    mystruct A;
    int answer = 42;

    const mystruct& use_struct_option_1 = A; // quick
    const mystruct use_struct_option_2 = A; // expensive

    const int& use_answer_option_1 = answer; // good practice?
    const int use_answer_option_2 = answer; // ubiquitous
}

显然, use_struct_option_2这种方式初始化use_struct_option_2代价高昂,因为调用了mystruct的复制构造函数,而初始化use_struct_option_1方式更快。 但是,这同样适用于整数等类型吗?

从我一直锁定的代码中我可以看出

const int use_answer_option_2 = answer;

const int& use_answer_option_1 = answer;

哪个更可取?

这些做不同的事情。 例如,在 int 情况下:

answer = 43;
cout << use_answer_option_1 << '\n';     // 43
cout << use_answer_option_2 << '\n';     // 42

换句话说,选项 2 会复制,而选项 1 不会。

决定是否要进行复制(即是否要查看引用中反映的对原始初始值设定项的更改)。 mystruct情况是一样的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM