Questions tagged «constants»

编程中的常量是定义,其值在程序执行期间是固定的。例如,大多数语言中的文字都是常量。在引用透明的编程样式中,所有定义都是常量。const限定的数据存储区(对象,字段,变量,参数)是“永不改变”的区域,因此可以进行额外的代码生成器优化和对程序正确性的额外静态检查。

8
在方法内部使用const代替变量的优点
每当方法中有局部变量时,ReSharper建议将其转换为常量: // instead of this: var s = "some string"; var flags = BindingFlags.Public | BindingFlags.Instance; // ReSharper suggest to use this: const string s = "some string"; const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; 鉴于这些实际上是常量值(而不是变量),我知道ReSharper建议将其更改为const。 但是除此之外,使用const(例如,更好的性能)时是否还有其他优点可以证明使用合理的关键字const BindingFlags代替了方便和可读的var关键字? 顺便说一句:我刚刚在这里发现了一个类似的问题:Resharper总是建议我使用const string而不是string,但是我认为这更多地是关于类的字段,而我的问题是关于局部变量/ consts的。

3
为什么有时不需要在lambda中捕获const变量?
考虑以下示例: #include <cstdlib> int main() { const int m = 42; [] { m; }(); // OK const int n = std::rand(); [] { n; }(); // error: 'n' is not captured } 为什么我需要n在第二个Lambda中捕获而不是m在第一个Lambda中捕获?我检查了C ++ 14标准中的5.1.2节(Lambda表达式),但找不到原因。您能指出我对此段的解释吗? 更新:我在GCC 6.3.1和7(主干)中都观察到了此行为。在这两种情况下(variable 'm' cannot be implicitly captured in a lambda with no capture-default specified),Clang …


8
Pedantic GCC警告:函数返回类型上的类型限定符
当我第一次使用GCC 4.3编译我的C ++代码时(成功地在4.1、4.0、3.4上使用-Wall -Wextra选项进行了警告的情况下成功编译了它)之后,突然出现了一系列错误warning: type qualifiers ignored on function return type。 考虑temp.cpp: class Something { public: const int getConstThing() const { return _cMyInt; } const int getNonconstThing() const { return _myInt; } const int& getConstReference() const { return _myInt; } int& getNonconstReference() { return _myInt; } void setInt(const int newValue) …

17
在Kotlin中定义log TAG常数的最佳方法是什么?
我正在Android应用程序中创建第一个Kotlin类。通常出于记录目的,我有一个名为name的常量TAG。我在Java中要做的是: private static final String TAG = MyClass.class.getSimpleName(); 我知道在Kotlin类中可以TAG使用以下方式创建: private val TAG = MyClass::class.java.simpleName 这对于使用Java和Kotlin的项目是可以的,但是如果我启动仅在Kotlin中的新项目该怎么办?如何定义TAG常数?在我没有这种奇怪构造的情况下,还有更多的科特林方式class.java.simpleName吗?

6
在C ++标头中定义常量变量
我正在研究的程序具有适用于所有类的许多常量。我想制作一个头文件“ Constants.h”,并能够声明所有相关的常量。然后在其他课程中,我可以只包含#include "Constants.h。 我使用#ifndef...#define ...语法使其正常工作。但是,我更喜欢使用const int...常量的形式。我不太确定该怎么做。
75 c++  header  constants 

12
无法释放C中的const指针
我怎样才能释放const char*?我使用分配了新的内存malloc,当我尝试释放它时,我总是收到错误“不兼容的指针类型” 导致这种情况的代码类似于: char* name="Arnold"; const char* str=(const char*)malloc(strlen(name)+1); free(str); // error here
73 c  constants  free 

12
返回对对象的const引用,而不是副本
在重构某些代码时,我遇到了一些返回std :: string的getter方法。例如: class foo { private: std::string name_; public: std::string name() { return name_; } }; 当然,吸气剂返回一个更好const std::string&?当前方法返回的副本效率不高。返回const引用会引起任何问题吗?
73 c++  constants 




3
如何在Java中声明常量
我们总是写: public static final int A = 0; 题: 是在类中static final声明常量的唯一方法吗? 如果我改写public final int A = 0;,是A一个常量还是一个实例字段? 什么是实例变量?实例变量和实例字段有什么区别?
71 java  constants 

11
如果您已经知道变量应该是常量,为什么还要使用关键字const?
const当不应该修改变量的值时,我正在阅读的许多书都使用关键字。除了向代码的读者指定如果您修改此变量可能会导致错误的代码(您可以使用注释来做到这一点),为什么还需要将该关键字作为任何编程语言的一部分?在我看来,如果您不想修改变量,那就根本不要。 有人可以帮我澄清一下吗?
70 c++  c  constants  keyword 

3
恼人的“警告:已初始化常量”消息的解决方案
今天,我偶然发现了一个有关Ruby常量的棘手问题。在我们的团队中,有人创建了一个模块,该模块包含在多个模型中。在我们的(规格)测试输出中,此结果会生成警告消息,例如: /home/ayrton/project/lib/life_cycle.rb:5:警告:已初始化常量RESET 解决此问题的一种方法是,像这样声明常量: module LifeCycle unless (const_defined?(:RESET)) RESET = 'reset' end #... end 我还阅读了由Avdi Grimm撰写的博客文章,该文章提供了一种替代解决方案,我想知道您对此事有何看法。
68 ruby  constants 

6
如果“ let”关键字用于快速定义常量/不可变变量,那么“ static”关键字有什么用?
我对在Swift中使用static关键字有些困惑。众所周知,swift引入了let关键字来声明不可变对象。就像声明表视图单元格的ID一样,该ID在其生命周期中很可能不会改变。现在在一些类似struct的声明中使用static关键字是什么: struct classConstants { static let test = "test" static var totalCount = 0 } 而让关键字做同样的事情。在目标C中,我们使用static声明了一些常量,例如 static NSString *cellIdentifier=@"cellId"; 除了让我更好奇的是,还使用了static关键字以及let和var关键字。有人可以解释一下该静态关键字在哪里使用吗?更重要的是,我们真的需要快速静态化吗?
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.