草庐IT

const_cast

全部标签

c++ - 如何将 LPCWSTR 转换为 const char *?

如何将LPCWSTR转换为constchar*?谢谢 最佳答案 使用WideCharToMultiByte功能。请注意,LPCWSTR与constwchar_t*相同,因此如果您在整个应用程序中处理宽字符数据,则可能不需要在全部。 关于c++-如何将LPCWSTR转换为constchar*?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4542521/

c++ - 为什么要在最后放一个 "const"?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:c++constuseinclassmethodsMeaningof“const”lastinaC++methoddeclaration?intoperator==(constAAA&rhs)const;这是一个运算符重载声明。为什么把const放在最后?谢谢 最佳答案 const关键字表示该方法不会更改对象。由于operator==用于比较,因此无需更改任何内容。因此,它是const。对于像operator=这样会修改对象的方法,必须省略它。它让编译器

C++0x 错误:将带有 std::shared_ptr 的函数重载为 const 参数不明确

假设我有两个不相关类A和B。我还有一个类Bla使用boost::shared_ptr像这样:classBla{public:voidfoo(boost::shared_ptr);voidfoo(boost::shared_ptr);}注意const。这是这个问题的原始版本缺少的重要部分。这编译,下面的代码工作:Blabla;boost::shared_ptra;bla.foo(a);但是,如果我在上述示例中从使用boost::shared_ptr切换到使用std::shared_ptr,我会收到如下编译错误:"error:callofoverloaded'foo(std::shared

c++ - & 在构造函数中使用 const

有人能告诉我为什么我们通常将const和&与一些在构造函数中传递的对象放在一起吗?Book::Book(constDate&date);我在这里感到困惑的是,通常在some函数中使用&符号,因为值是通过引用传递的,函数中该变量发生的任何变化都应该在之后反射(reflect)出来。但另一方面,const表示不能对该变量进行赋值。如果有人对此有一些好的想法,请告诉我原因。 最佳答案 这样做是为了避免不必要的复制。以下面的代码为例:Book::Book(Datedate):date_(date){}当您调用此构造函数时,它将复制date两

C++:即使被转换的对象不是 NULL,dynamic_cast 也会导致 SEGFAULT。怎么会这样?

假设我有一个类A和一个派生自A的类B。现在,我想使用dynamic_cast(见下文)将constA*(称为“a”)转换为B*。如果“a”真的是B*,那么我得到的对象指针应该没问题。如果“a”不是B*,那么我将得到NULL。constA*a=newB();constB*b=dynamic_cast(a);出于某种原因,dynamic_cast操作会导致SEGFAULT。如果“a”不是NULL,那怎么会发生呢?我想如果有任何转换问题,dynamic_cast会给我一个NULL指针,而不是SEGFAULT。如果我试图访问“b”并且动态转换不成功,我应该只得到一个SEGFAULT,对吗?我什

c++ - std::chrono::duration_cast - 有比纳秒更精确的单位吗?

我想问的是,如何以皮秒、飞秒等任何单位计算时间,甚至更精确。我正在计算函数的运行时间并使用纳秒,当我使用毫秒或纳秒时,函数的运行时间返回0。我认为Chrono库只支持到纳秒,这是我在输入chrono::后按下ctrl+space时出现的最精确的时间:intmain(){autot1=std::chrono::high_resolution_clock::now();f();autot2=std::chrono::high_resolution_clock::now();std::cout(t2-t1).count()代码来源:http://en.cppreference.com/w/c

c++ - 为什么 “cast from ‘X*’ 到 ‘Y’ 失去精度”是一个硬错误,什么是遗留代码的合适修复

1。为什么?像这样的代码曾经有效,它的含义很明显。编译器是否甚至允许(根据规范)让它成为一个错误?我知道它正在失去精度,我很乐意收到警告。但它仍然具有定义明确的语义(至少对于未签名的缩小规模转换已定义)并且用户可能只是想这样做。2。解决方法我有遗留代码,我不想重构太多,因为它相当棘手并且已经调试过了。它正在做两件事:有时将整数存储在指针变量中。如果代码之前在其中存储了一个整数,则该代码只会将指针转换为整数。因此,虽然Actor阵容正在缩小,但现实中永远不会发生溢出。代码已经过测试并且可以工作。当存储整数时,它总是适合普通的旧无符号类型,因此更改类型不是一个好主意并且指针被传递了很多次,

c++ - "const int& jj"和 "int& const jj"有什么区别?

我对这两个感到困惑。我知道C++引用本质上是常量,一旦设置它们就不能更改为引用其他内容。 最佳答案 constint&表示对constint的引用。(同样,int&表示对非常量int的引用。)int&const字面意思是const引用(对非constint),这在C++中是无效的,因为引用本身不能是const限定的。$8.3.2/1References[dcl.ref]Cv-qualifiedreferencesareill-formedexceptwhenthecv-qualifiersareintroducedthroughth

C++ - 将枚举类作为值或 const 引用传递更好吗?

因为它被称为“类”,所以我通常会将它作为const引用传递,但如果我使用普通枚举,它没有什么区别,对吗?那么,如果我将枚举类作为值/常量引用传递,会有什么不同吗?另外,类型重要吗?例如枚举类:int 最佳答案 enumclass像常规enum一样保存一个整数值,因此您可以安全地按值传递它而无需任何开销。请注意,编译器有时也可能通过将其替换为按值传递来优化按引用传递。但是,如果不应用此类优化,通过引用传递可能会导致一些开销。 关于C++-将枚举类作为值或const引用传递更好吗?,我们在S

C++:如何处理需要修改的const对象?

我在代码中有个地方曾经说过constmyType&myVar=someMethod();问题在于:someMethod()返回constmyType我以后需要能够更改myVar,方法是在对象处于无效状态时分配默认值。所以我需要使myVar成为非常量。我想我也需要让myVar成为非引用,对吧?例如。myTypemyVar?执行此常量到非常量的C++“正确”方法是什么?静态转换?词汇表?还有别的吗?我可能可以访问boost的词法转换,所以我不介意这个选项,但我更喜欢非boost解决方案,如果它最终不允许我这样做使用提升。谢谢! 最佳答案