Questions tagged «const-correctness»


16
以const正确性卖给我
那么,为什么总是建议尽可能多地使用const呢?在我看来,在C ++中使用const可能比提供帮助更痛苦。但是再说一次,我是从python角度出发的:如果您不希望更改某些内容,请不要更改它。如此说来,这里有几个问题: 好像每次将某物标记为const时,我都会遇到错误,并且还必须在某个地方更改其他一些函数才能成为const。然后这导致我不得不在其他地方更改另一个功能。有了经验,这会变得更容易吗? 使用const的好处真的足以弥补麻烦吗?如果您不打算更改对象,为什么不不编写不更改对象的代码呢? 我应该注意,在这个时候,我最专注于将const用于正确性和可维护性的好处,尽管对性能的影响也很了解。

4
常量正确性可以提高性能吗?
我已经读过很多遍了,在C或C ++代码中强制执行const正确性不仅是关于可维护性的好习惯,而且还可以使您的编译器执行优化。但是,我也读过完全相反的内容,它完全不影响性能。 因此,您是否有一些示例说明const正确性可以帮助您的编译器改善程序性能?

7
C#中的“常量正确性”
const正确性的重点是能够提供用户无法更改或删除的实例的视图。编译器通过指出何时从const函数中破坏constness或尝试使用const对象的非const函数来支持此功能。因此,无需复制const方法,是否可以在C#中使用具有相同目的的方法? 我知道不变性,但这并没有真正延续到容器对象上,仅举一个例子。


1
std :: function const正确性
假设我有一个像这样的可调用类型: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; 请注意,它mutable_callable具有一个operator()用于修改成员变量的非常量。 现在假设我创建了一个std::function我的类型之外的代码: std::function<int()> foo = mutable_callable{}; 现在我可以这样做: void invoke(std::function<int()> const& z) { z(); } int main() { invoke(foo); // foo changed.....oops } 现在,据我所知,std::functions operator()的信息const如下:https : //en.cppreference.com/w/cpp/utility/functional/function/operator() 所以我的直觉是您不应该这样做..... 但随后查看:https : //en.cppreference.com/w/cpp/utility/functional/function/function 这似乎对可调用类型是否具有常量没有任何限制operator()…… 所以我的问题是:我认为这std::function<int()> …

2
复制具有线程安全规则建议的非const参数的构造函数?
我有一些旧代码的包装。 class A{ L* impl_; // the legacy object has to be in the heap, could be also unique_ptr A(A const&) = delete; L* duplicate(){L* ret; legacy_duplicate(impl_, &L); return ret;} ... // proper resource management here }; 在此旧版代码中,“复制”对象的函数不是线程安全的(调用相同的第一个参数时),因此const在包装器中未对其进行标记。我猜想遵循现代规则:https : //herbsutter.com/2013/01/01/video-you-dont-know-const-and-mutable/ 这duplicate看起来是实现复制构造函数的一种好方法,除了细节不是const。因此,我不能直接这样做: class A{ L* impl_; // the legacy object has …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.