草庐IT

const_cast-ed

全部标签

C++ - const 成员/返回 const int& 与 return int

那些C++行是什么意思?是否有其他方式来编写它们?constint&a()const;intgetA()const;谢谢。 最佳答案 这两个是promise不更改对象本身的类中成员函数的两个可能签名。在第一种情况下,它将返回一个对整数(可能是成员属性)的常量引用,引用是const意味着调用者将无法使用它来更改内部属性。第二种情况它按值返回一个整数。在语义上略有不同,但大多数情况下它们并不重要,将它们视为两个获取值的函数。对于它会有所作为的情况,请参见:classtest{public:test():m_value(){std::co

c++ - extern const char* const SOME_CONSTANT 给我链接器错误

我想像这样在API中提供一个字符串常量:externconstchar*constSOME_CONSTANT;但是如果我在我的静态库源文件中将它定义为constchar*constSOME_CONSTANT="test";当链接到该库并使用SOME_CONSTANT时,我遇到链接器错误:Error1errorLNK2001:unresolvedexternalsymbol"charconst*constSOME_CONSTANT"(?SOME_CONSTANT@@3QBDB)从externconstchar*const声明和定义中删除指针常量(第二个const关键字)使其工作。如何使用

C++:for 循环中的多个退出条件(多个变量):AND -ed 还是 OR -ed?

For循环和多个变量和条件。我正在使用for循环来设置源索引和目标索引以复制数组中的项目。for(intsrc=0,dst=8;src=0;src++,dst--){arr2[dst]=arr1[src];}反正就是这样。(与)||(||)我的问题是关于退出条件。这里有两个。src和dst>=0.这些条件是AND运算(&&)还是OR运算(||)。进一步解释一下,条件是这样计算的:(src=0)或者他们是这样评价的?(src=0)还是完全不同的东西?我想合乎逻辑的做法是评估我上面指定的两种方式之一,而不是其他方式。 最佳答案 逗号运算

c++ - 为什么 lexical_cast 要求运算符>>位于匹配的 namespace 中?

这是一个测试用例:#include#includenamespaceN{enumclassalarm_code_t{BLAH};}std::istream&operator>>(std::istream&is,N::alarm_code_t&code){std::stringtmp;is>>tmp;if(tmp=="BLAH")code=N::alarm_code_t::BLAH;elseis.setstate(std::ios::failbit);returnis;}intmain(){autocode=boost::lexical_cast("BLAH");}Boost拒绝转换,声

c++ - 如何确定一个类型是否可以仅使用 const 引用调用?

我想写一个C++元函数is_callable定义value成为true,当且仅当类型F具有SomeReturnTypeoperator()(constArg&)形式的函数调用运算符时.例如,在下面的情况下structfoo{voidoperator(constint&){}};我要is_callable成为false和is_callable成为true.这是我到目前为止所拥有的:#include#includetemplatestructis_callable{private:templatestaticchar(&test(...))[2];templatestructhelper{

c++ - const_cast 的合法用途是什么

因为在const_cast的帮助下,任何人都可以修改我声明的常量对象-const限定符有什么用?我的意思是,有人怎么能确保他声明的const无论如何都不会被修改? 最佳答案 您是对的,const_cast的使用通常表示存在设计缺陷,或者API不受您的控制。但是,有一个异常(exception),它在重载函数的上下文中很有用。我引用了C++Primer一书中的一个例子://returnareferencetotheshorteroftwostringsconststring&shorterString(conststring&s1,c

c++ - <错误 C2059 : syntax error : 'constant' > when compiling with const int

编译以下代码时出现以下错误:3>c:\hedge\hedge\hedge\AisTarget.h(22):errorC2059:syntaxerror:'constant'3>c:\hedge\hedge\hedge\AisTarget.h(22):errorC2238:unexpectedtoken(s)preceding';'#if!defined(AisTarget_h)#defineAisTarget_h#include"GeneralAviationItems.h"#includenamespaceHEDGE{usingnamespaceGeneralAviation;cla

c++ - 有没有人发现需要声明一个复制赋值运算符的返回参数const?

复制赋值运算符具有通常的签名:my_class&operator=(my_classconst&rhs);下面的签名有实际用途吗?my_classconst&operator=(my_classconst&rhs);您只能定义其中之一,而不能同时定义两者。 最佳答案 使复制赋值的返回类型成为非常量引用的主要原因是它是标准中“可赋值”的要求。如果您将返回类型设为const引用,那么您的类将无法满足在任何标准库容器中使用的要求。 关于c++-有没有人发现需要声明一个复制赋值运算符的返回参数c

c++ - static_cast 可以在 C++ 中抛出异常吗?

假设static_cast永远不会抛出异常是否安全?对于int到Enum的转换,即使无效也不会抛出异常。我可以依赖这种行为吗?以下代码有效。enumanimal{CAT=1,DOG=2};inty=10;animalx=static_cast(y); 最佳答案 对于这种特定类型的转换(枚举类型的组成部分),可能会抛出异常。C++standard5.2.9Staticcast[expr.static.cast]paragraph7Avalueofintegralorenumerationtypecanbeexplicitlyconve

c++ - 什么是 qobject_cast?

谁能用尽可能简单的术语(或尽可能简单)解释什么qobject_cast是,它的作用以及为什么我们需要将一种类类型转换为另一种类类型?比如,我在转换int的意义上进行了类型转换作为char或QString也许使用QMessageBox,但为什么要分到不同的类中呢? 最佳答案 在你开始学习之前qobject_cast也就是说,您需要知道C++的dynamic_cast是什么是。动态Actor就是关于polymorphism.C++的动态转换使用RTTI(运行时类型信息)来转换对象。但是qobject_cast在没有RTTI的情况下执行此