草庐IT

const-char

全部标签

c++ - 为什么一个 const Class& 可以被初始化为自身?

今天我遇到了一个非常愚蠢但难以检测的错误。相关代码如下:classVector;classPointIterator{constVector&x;constVector&yv;PointIterator(constVector&xv,constVector&yvo):x(xv),yv(yv){;};//^^hereiswrong};为什么这样的代码是合法的C++?在任何情况下都可以使用yv变量吗?我知道关于intx=x+1;的类似问题,(请参阅thisquestion)但后者未正确初始化,您仍然可以使用x变量,而在上面的代码中,我认为您不能使用yv。奖励点:是否有任何编译选项可以让我检

c++ - 在 const 方法中将 'mutable' 用于异步填充缓存

我担心我违反了mutable的约定,我使用它在异步执行按需请求的数据模型中缓存信息。数据模型恰好是Qt,尽管这不是特别重要的事实。classMyDataModel:publicQAbstractItemModel{public:QVariantdata(constQModelIndex&index,introle)constoverride;private:voidSignalRowDataUpdated(introw)const;mutableSimpleRowCachemCache;};当data()被调用时,我检查缓存看是否有它。如果没有,我会立即返回空数据(以避免阻塞UI)并向

【C++】const、static关键字和构造函数初始化

💗个人主页💗⭐个人专栏——C++学习⭐💫点击关注🤩一起学习C语言💯💫目录1.const修饰成员函数1.1语法格式1.2权限放大缩小1.3思考1.4解答2.再谈构造函数2.1构造函数体赋值2.2初始化列表2.3explicit关键字3.static成员3.1静态变量3.2静态函数3.3 静态成员变量1.const修饰成员函数将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。1.1语法格式在成员函数的声明中使用const关键字的语法格式为:返回类型函数名()const;在成员函数的定

c++ - c++11 严格别名规则是否允许通过 char *、char(&)[N]、甚至 std::array<char, N>& 使用 -fstrict-aliasing -Wstrict-aliasing=2 访问 uint64_t?

根据this关于C++11/14严格别名规则的stackoverflow回答:Ifaprogramattemptstoaccessthestoredvalueofanobjectthroughaglvalueofotherthanoneofthefollowingtypesthebehaviorisundefined:thedynamictypeoftheobject,acv-qualifiedversionofthedynamictypeoftheobject,atypesimilar(asdefinedin4.4)tothedynamictypeoftheobject,atypet

c++ - 调用 printf 时隐式转换为 char*

我在我的C++GUI应用程序中使用Unicode字符串作为图标,我想摆脱所有散落在周围的u8"\uf118"魔法字符串,并在途中制作这些字符串是它们自己的一种类型。所以我创建了一个这样的类:structicon{explicitconstexpricon(constchar(&unicode_icon)[4]):_icon{unicode_icon[0],unicode_icon[1],unicode_icon[2],unicode_icon[3]}{}operatorconstchar*()const{return_icon.data();}private:std::array_ic

c++ - 从 'const char**' 到 'char* const*' 的无效转换

我正在做一个学校作业,我必须调用execvp,其方法签名如下execvp(constchar*file,char*constargv[])但是我的数据是这样的:std::vector我一直在尝试将所述vector转换为execvp()的第二种格式的正确格式,但不可避免地会出现以下错误:command.cc:120:29:error:invalidconversionfrom‘constchar**’to‘char*const*’[-fpermissive]execvp(args[0],argv);我尝试了不同的变体,但它们都会导致此错误。这个错误让我很困惑,因为我不知道const*是什

c++ - 在最佳时间从 _variant_t 获取 char*

这是我想要加速的代码。它从ADO记录集中获取值并将其转换为char*。但这很慢。我可以跳过_bstr_t的创建吗?_variant_tvar=pRs->Fields->GetItem(i)->GetValue();if(V_VT(&var)==VT_BSTR){char*p=(constchar*)(_bstr_t)var; 最佳答案 BSTR的前4个字节包含长度。您可以遍历并获取每个其他字符(如果是unicode)或每个字符(如果是多字节)。某种memcpy或其他方法也可以。IIRC,这可能比W2A或类型转换(LPCSTR)(_b

【C++入门到精通】C++类型的转换 | static_cast | reinterpret_cast | const_cast | dynamic_cast [ C++入门 ]

阅读导航引言一、强制转换(集成C语言的语法)二、static_cast操作符1.操作符介绍2.使用示例(1)基本类型之间的转换(2)类型之间的隐式转换(3)类指针和引用之间的转换三、reinterpret_cast操作符1.操作符介绍2.使用示例(1)将指针转换为整数(2)将整数转换为指针(3)将指向基类的指针转换为指向派生类的指针(4)将指向不同类型的指针进行转换四、const_cast操作符1.操作符介绍2.使用示例(1)移除常量性以修改对象的值(2)在函数中移除常量性以调用非常量版本的成员函数(3)移除常量性以进行底层操作五、dynamic_cast操作符1.操作符介绍2.使用示例(1)

C++ 查找方法不是 const 吗?

我已经编写了一个方法,我想将其声明为const,但编译器会报错。追查了一下,发现问题出在这部分方法上:boolClassA::MethodA(intx){booly=false;if(find(myList.begin(),myList.end(),x)!=myList.end()){y=true;}returny;}方法中发生的事情远不止于此,但除去所有其他内容后,这就是不允许方法成为常量的部分。为什么STLfind算法会阻止方法成为const?它会以任何方式改变列表吗? 最佳答案 如果myList是自定义容器类型的对象,如果它的

c# - 如何使用 P/INVOKE 将 C++ char* 编码为 C# 字符串

我是C++新手。我正在使用PINVOKE从C#调用C++函数,并希望将字符串作为输出参数返回。但是我只得到一个空字符串。intout参数工作正常。导入:[DllImport(@"UnamanagedAssembly.dll",CharSet=CharSet.Ansi)]publicstaticexternintActivate(refintnumActivated,StringBuildereventsActivated);extern"C"__declspec(dllexport)intActivate(int*p_NumActivated,char*p_EventsActivate