Questions tagged «const»

9
如何用布尔清除器拨打电话?布尔陷阱
如@ benjamin-gruenbaum在评论中所指出的,这称为布尔陷阱: 说我有一个这样的功能 UpdateRow(var item, bool externalCall); 在我的控制器中,该值externalCall始终为TRUE。调用此函数的最佳方法是什么?我通常写 UpdateRow(item, true); 但是我问自己,我是否应该声明一个布尔值,以表明“真”值代表什么?您可以通过查看函数的声明来知道这一点,但是如果您看到类似以下内容,显然会更快,更清晰 bool externalCall = true; UpdateRow(item, externalCall); PD:不确定这个问题是否真的适合这里,如果不合适,我在哪里可以得到更多有关此的信息? PD2:我没有标记任何语言,因为我认为这是一个非常普遍的问题。无论如何,我使用c#,并且可接受的答案适用于c#
76 boolean  const 

4
何时以及出于什么目的在C中将const关键字用于变量?
在这里审核我的代码时,const出现了使用关键字的问题。我了解它用于对变量执行只读行为。 我对它可能有用时的各种情况感到困惑。 是否应该在功能原型中为了清楚起见使用它? 在代码开发期间是否应将其用作安全措施? 是否应该在各种函数的范围内使用它们来声明运行时常量? 应该完全使用吗? 这些问题仅仅是我所面临的困惑的例子。一般的困惑是 什么时候const在C编程中使用关键字? 在C语言中使用此关键字可以获得哪些好处? 使用const关键字有什么弊端吗? 有人指出,由于所有这些问题,在我的问题的细节中,这个问题可能太广泛了。我只是想澄清这些问题只是为了澄清对主要问题的困惑。 何时以及出于什么目的在C中将const关键字用于变量? 也可以改写为 const在C`中正确使用关键字具有相同的优缺点。

7
常数值可以随时间改变吗?
在开发阶段,某些变量需要在同一运行中进行固定,但可能需要随时间进行修改。例如boolean,使用信号通知调试模式,因此我们可以在程序中执行通常不会执行的操作。 在常量中(例如,final static int CONSTANT = 0在Java中)包含这些值是否不好?我知道常量在运行时保持不变,但是在整个开发过程中,除了计划外的更改之外,常量也应该保持不变吗? 我搜索了类似的问题,但没有找到与我完全匹配的任何内容。
28 const  constants 

7
不可变与const之间的区别
我经常看到这些术语,immutable并且const可以互换使用。但是,从我的(很少)经验来看,两者在代码中的“合同”上有很大不同: 不可变,使合同,这个对象就不会改变,任何(如Python的元组,Java字符串)。 Const使合约在此变量的范围内不被修改(不保证在此期间,其他线程可能会对指向的对象执行任何操作,例如C / C ++关键字)。 显然,除非语言是单线程(PHP)或具有线性或唯一性键入系统(Clean,Mercury,ATS),否则两者并不等效。 首先,我对这两个概念的理解正确吗? 第二,如果有区别,为什么它们几乎只能互换使用?

6
可读性是在(参考)参数中不使用const的正当理由吗?
在编写一些函数时,我在这样的参数中找到了const关键字: void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } 通常会导致在IDE或vim中将一行分成两行,因此我想删除参数中的所有const关键字: void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } 这是不使用const的正当理由吗?手动保持参数对象不变是否可以维护?

4
将类似C ++的const引入语言有什么问题?
我对C ++的想法感兴趣,而const不是特定的执行(例如Castingaway const)。 以C#为例-它缺少类似于C ++的const,其原因是通常的-人员和时间。在这里,另外,似乎C#团队研究了C ++的const市场营销CLR 执行情况,并且在这一点上已经足够了(请参阅为什么在c#和const参数中没有const成员方法;谢谢Svick)。如果我们走得更远,还有其他吗? 还有更深的东西吗?以多重继承为例-通常(对于用户)它很难理解,因此没有添加到语言中(例如钻石问题)。 在《自然》杂志中是否存在某种const问题,那就是让语言最好避免这种问题?像确定const是深还是浅之类的东西(有了const容器,这意味着我也不能添加新元素或更改现有元素;如果元素属于引用类型怎么办)? 更新:虽然我提到C#,因此从历史的角度出发,但我对const语言潜在问题的性质感兴趣。 这不是语言的挑战。请忽略当前趋势或受欢迎程度等因素-我只对技术问题感兴趣-谢谢。

6
零为常数?
我最近遇到了这个编程习惯用法: const float Zero = 0.0; 然后用于比较: if (x > Zero) {..} 任何人都可以解释一下,这实际上是否比以下方法更有效,可读性或可维护性: if (x > 0.0) {..} 注意:我可以想到定义此常量的其他原因,我只是想知道它在此上下文中的使用。

2
Const C ++ DRY策略
为了避免与C ++ const无关的重复,在某些情况下const_cast可以工作,但返回非const的私有const函数不起作用? 在Scott Meyers的有效C ++项目3中,他建议将const_cast与静态强制转换结合使用可以是避免重复代码的有效且安全的方法,例如 const void* Bar::bar(int i) const { ... return variableResultingFromNonTrivialDotDotDotCode; } void* Bar::bar(int i) { return const_cast<void*>(static_cast<const Bar*>(this)->bar(i)); } Meyers继续解释说,让const函数调用非const函数是危险的。 下面的代码是一个反例,显示: 与Meyers的建议相反,有时将const_cast与静态强制转换结合使用是危险的 有时让const函数调用非const的危险性较小 有时两种使用const_cast的方式都可能隐藏有用的编译器错误 避免const_cast并让其他const私有成员返回非const是另一种选择 避免代码重复的const_cast策略中的一种是否被视为良好实践?您愿意使用私有方法策略吗?在某些情况下,const_cast可以工作,但私有方法不能工作吗?还有其他选择(除了重复)吗? 我对const_cast策略的担心是,即使编写时代码正确,以后在维护期间代码也可能变得不正确,并且const_cast将隐藏有用的编译器错误。似乎普通的私有功能通常更安全。 class Foo { public: Foo(const LongLived& constLongLived, LongLived& mutableLongLived) : mConstLongLived(constLongLived), mMutableLongLived(mutableLongLived) {} // case A: we shouldn't …
14 c++  dry  const 

3
人们在Objective C中编程时会使用const吗?
相关:“将'const NSString *'发送到类型'NSString *'的参数将丢弃限定符”警告 有时候,我认为这很有用。我可能需要传递一个表,并要确保该表的内容不会更改。 但是,在大多数Objective-C程序示例中,我从未见过const。我的问题是为什么?

4
在C / C ++中,应尽可能在参数和局部变量中使用'const'吗?
这个问题的灵感来自java中的一个问题final。 在C / C ++中,应const尽可能使用? 我知道已经有一个关于const在参数中使用的相关问题。不幸的是,这个问题及其答案不能完全回答我的问题,因为它仅与函数参数有关,但我也想了解其他情况(例如:局部变量)。 另外,几乎所有该问题的答案都说我们应该使用,const因为它包含有关变量可访问性的有用信息。但这似乎与在Java中使用final的答案相抵触,因为final如果其中不包含额外的信息,状态可能是多余的,因此应省略它以使代码简洁明了。 那么,我应该const尽可能使用吗?如果是这样,为什么constC ++中的建议final与Java中的建议不同?
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.