9得票5回答
为什么在 .Net 中常量不全部使用大写字母?

微软的.Net命名约定将常量放在帕斯卡命名法中。实际上,它明确告诉我们避免使用全大写字母表示常量: 您可能还需要将标识符大写,以保持与现有的非托管符号方案的兼容性,其中通常对枚举和常量值使用所有大写字符。一般来说,这些符号不应该在使用它们的程序集之外可见。 摘自MSDN。 在SO上...

35得票3回答
如何初始化一个静态std::atomic数据成员

我想以线程安全的方式为一个名为order的类生成标识符。下面的代码无法编译。我知道原子类型没有拷贝构造函数,我猜这就是为什么这段代码不起作用的原因。 有人知道如何让这段代码真正起作用吗?有其他替代方法吗? #include <atomic> #include <iostr...

24得票3回答
为什么运算符++返回一个非常量值?

我已经阅读了Scott Meyers写的《Effective C++第三版》。 该书的第3条目,“尽可能使用const”,指出如果我们希望防止rvalue被意外地分配给函数的返回值,返回类型应该是const。 例如,针对iterator的递增函数:const iterator iterat...

525得票31回答
使用const修饰函数参数会产生什么影响?为什么它不会影响函数的签名?

例如,想象一个简单的变异器,它接受一个布尔类型的参数: void SetValue(const bool b) { my_val_ = b; } 那个const实际上有任何影响吗?个人而言,我倾向于广泛使用它,包括参数,但在这种情况下,我想知道它是否有任何区别。 我也很惊讶地发现,在函...

15得票5回答
使用const int* const 的scanf可以工作,但不应该这样做

我有类似以下代码的等价物:const int* const n = new int; printf("input: "); scanf("%d", n); delete n; 现在,由于n是指向一个常量整数的指针,所以这应该是不起作用的(我期望会有编译器错误)。然而,这似乎可以正常工作,甚至将...

11得票2回答
为什么无内容类的常量对象不能被创建

#include <iostream> class A { public: void foo() const { std::cout << "const version of foo" << std::endl; ...

79得票5回答
C++中const重载的作用是什么?

在C++中,函数的签名部分取决于它是否为const。这意味着一个类可以有两个成员函数,它们具有相同的签名,只是其中一个是const,另一个不是。如果您有这样的类,则编译器将根据您调用它的对象来决定调用哪个函数:如果它是该类的常量实例,则会调用const版本的函数;如果对象不是常量,则调用另一个...

23得票7回答
“const”关键字的使用是教条主义还是合理的?

在Delphi中,您可以通过将参数声明为const来加快代码的执行速度,例如:function A(const AStr: string): integer; //or function B(AStr: string): integer; 假设这两个函数的代码内容相同,它们之间的速度差异可...

43得票6回答
在使用Rails时,处理Ruby中的常量的最佳方式是什么?

我有一些常量,它们代表了我的模型字段中的有效选项。在Ruby中处理这些常量的最佳方法是什么?

76得票4回答
在 .Net 中,Decimal.One、Decimal.Zero 和 Decimal.MinusOne 的目的是什么?

简单问题 - 为什么Decimal类型定义了这些常量? 为什么要麻烦呢? 我正在寻找语言定义这个的原因,而不是可能用途或对编译器的影响。 为什么一开始就把它放在那里? 编译器可以像使用Decimal.Zero一样轻松地内联0m,因此我不认为它是编译器的捷径。