相关疑难解决方法(0)

值参数的Const正确性

我知道关于const正确性的问题很少,其中声明函数的声明及其定义不需要同意值参数.这是因为值参数的常量仅在函数内部很重要.这可以:

// header
int func(int i);

// cpp
int func(const int i) {
    return i;
}
Run Code Online (Sandbox Code Playgroud)

这样做真的是最好的做法吗?因为我从未见过有人这样做过.我已经在其他地方看过这个引用(不确定来源),这已被讨论过:

"事实上,对于编译器,无论是否在值参数前面包含此const,函数签名都是相同的."

"避免在函数声明中使用const值传递参数.如果不修改参数const,则仍然将参数const置于同一函数的定义中."

第二段说不要将const放在声明中.我假设这是因为值参数的常量作为接口定义的一部分是没有意义的.这是一个实现细节.

根据这个建议,是否也建议指针参数的指针值?(它对参考参数没有意义,因为您无法重新分配参考.)

// header
int func1(int* i);
int func2(int* i);

// cpp
int func1(int* i) {
    int x = 0;

    *i = 3; // compiles without error
    i = &x; // compiles without error

    return *i;
}
int func2(int* const i) {
    int x = 0;

    *i = 3; // compiles without error
    i = &x; // compile error

    return *i; …
Run Code Online (Sandbox Code Playgroud)

c++ const-correctness pass-by-value

26
推荐指数
2
解决办法
6185
查看次数

标签 统计

c++ ×1

const-correctness ×1

pass-by-value ×1