相关疑难解决方法(0)

使用'const'作为函数参数

你走多远const?您是否只是const在必要时制作功能,或者您是否全力以赴并在任何地方使用它?例如,想象一个简单的mutator,它接受一个布尔参数:

void SetValue(const bool b) { my_val_ = b; }
Run Code Online (Sandbox Code Playgroud)

const实际上有用吗?我个人选择广泛使用它,包括参数,但在这种情况下,我想知道它是否值得?

我还惊讶地发现你可以省略const函数声明中的参数,但可以将它包含在函数定义中,例如:

.h文件

void func(int n, long l);
Run Code Online (Sandbox Code Playgroud)

.cpp文件

void func(const int n, const long l)
Run Code Online (Sandbox Code Playgroud)

是否有一个原因?这对我来说似乎有点不寻常.

c++ const

368
推荐指数
15
解决办法
24万
查看次数

卖我的正确性

那么为什么总是建议尽可能经常使用const呢?在我看来,使用const可能比C++中的帮助更痛苦.但话说回来,我是从python的角度来看这个:如果你不想改变某些东西,不要改变它.所以说,这里有几个问题:

  1. 似乎每次我将某些东西标记为const时,我都会收到错误,并且必须将某些其他函数更改为const.然后这导致我必须在其他地方更改另一个功能.这是通过经验变得更容易吗?

  2. 使用const的好处真的足以弥补麻烦吗?如果您不打算更改对象,为什么不编写不会更改它的代码?

我应该注意到,在这个时间点,我最关注的是使用const来实现正确性和可维护性的好处,尽管了解性能影响也很好.

c++ const-correctness

121
推荐指数
13
解决办法
2万
查看次数

值参数的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++ const关键字 - 大量使用?

在以下C++函数中:

void MyFunction(int age, House &purchased_house)
{
    ...
}


void MyFunction(const int age, House &purchased_house)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

哪个更好?

在两者中,'年龄'都是按价值传递的.我想知道'const'关键字是否有必要:对我来说似乎是多余的,但也很有用(作为额外的指示,变量不会改变).

有没有人对上述哪个(如果有的话)更好有任何意见?

c++ syntax const

23
推荐指数
6
解决办法
1万
查看次数

标签 统计

c++ ×4

const ×2

const-correctness ×2

pass-by-value ×1

syntax ×1