为什么在void/int声明后使用const
Why const after void/int declaration?
可能重复:
const(c++(是可选的吗
常数成员函数
我看到过关于int a() const
的不同帖子。我的问题是,我们为什么要把const
关键字放在那里?我知道它阻止我们对函数所在类的成员进行更改,但那又怎样呢?
我们可以在函数上方写一条注释,并告诉编码器不要在函数内部对类本身进行任何更改,但为什么我们真的关心void
声明之后的const
呢?在哪些情况下,可能有更好的方法来使用例如int a() const
而不仅仅是int a()
,编译的代码会发生任何变化吗?
这确实会有所不同。将A
视为具有print()
方法的类。然后这个:
const A a;
a.print();
仅编译CCD_ 9被定义为CCD_。
当然,主要原因是为了防止对类中的对象进行任何更改。
我们可以在函数上方写一条注释,并告诉编码器不要在函数中对类本身进行任何更改
只是一厢情愿。这并没有真正发生。因此,如果有人没有阅读评论(或者阅读并忽略了它(,您将收到编译器错误。
优化还有一个好处——编译器可以更好地并行化const
对象上的任务,因为它可以假设它们在操作之间不会发生变化。
使用const
函数有三个基本原因:
1( C++只允许常量引用可以绑定到临时库。但是,如果您没有有用的const函数,那么const引用是无用的。
2( 一些库,如C++标准库,提供了仅适用于const函数的特定语义保证。例如,在标准集合上保证可以同时从多个线程访问集合的常量函数。
3( 它允许编译器发现容易犯的错误。例如,如果您打算依赖C++标准容器保证,如果您使用const对象,则只能调用const函数。因此,一个错误,比如有人在修改代码时忘记了并发问题,会在编译时被发现。(而不是当有人依靠你的程序来完成真正的工作时。(
声明成员函数const的好处是,如果修改对象,编译器将发出错误。因此,即使您不小心修改了对象,编译器也会发现您的错误。
- 为什么函数声明中允许 const?
- 在内存不足之前,我可以声明多少个 const 变量?
- 如何在声明为 const 的方法中更改类成员
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 可以使用<size_t>static_const(),std::as_const()或static_cast<const size_t>()来声明数组吗?
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 声明与 const 变量和成员函数相同的标识符
- 为什么我不能声明一个 constexpr 本地,而一个 const 一个工作?
- 类中的const声明
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 为什么我们在这个函数声明中使用 const 和 & ?
- 不可变的全局对象应该声明为"const my_result_t BLAH"还是"extern const my_result_t BLAH;"?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 如何在类中声明静态 const 结构元素
- 当我将 const int 声明/初始化为 5 时,它被初始化为一个大数字
- CPP主方法const声明
- 函数的Const声明
- 正在修改const声明对象上的可变对象的未定义行为
- 阅读复杂const声明的简单规则
- Const声明好奇