草庐IT

c++ - delete 如何区分内置数据类型和用户定义的数据类型?

如果我这样做://(1.)int*p=newint;//...dosomethingdeletep;//(2.)classsample{public:sample(){}~sample(){}};sample*pObj=newsample;//...dosomethingdeletepObj;那C++编译器怎么知道delete后面的对象是内置数据类型还是类对象呢?我的另一个问题是,如果我new一个指向int数组的指针,然后我delete[]那么如何编译器知道要取消分配的内存块的大小吗? 最佳答案 编译器知道指向对象的类型,因为它知道

校验ChatGPT 4真实性的三个经典问题:提供免费测试网站快速区分 GPT3.5 与 GPT4

现在已经有很多ChatGPT的套壳网站,以下分享验明GPT-4真身的三个经典问题,帮助你快速区分套壳网站背后到底用的是GPT-3.5还是GPT-4。大家可以在这个网站测试:https://ai.hxkj.vip,免登录可以问三条,登录之后无限制。咱们使用免登录的额度测试就已经够用了测试问题1:Whatistomorrowinrelationtoyesterday’stoday?(昨天的当天是明天的什么?)GPT-3.5回复:Yesterday(昨天)GPT-4回复:Past(前天)这里可以有很多变种,例如:把昨天改成前天。测试问题2:Thereare9birdsinthetree,thehun

c++ - 在编译时区分别名和真实类型?

我编写了一个模板函数,它接受任意数量的类型并针对底层架构和操作系统显示它们的大小。但是,该函数无法区分别名和实型,因此它被评估为就好像它是实型一样。但我希望能够在编译时区分别名和内置类型,并根据它交替输出。func();输出:Unsignedintis4bytes.Unsignedintis4bytes.但是,我希望输出是这样的Unsignedintis4bytes.size_tisanaliasforunsignedint.当然,这要求编译器能够在编译时区分别名和内置类型。那么,在任何C++版本中,有没有办法在编译时区分真实类型和别名? 最佳答案

c++ - 在不区分大小写的字符串 vector 中查找字符串 C++

我有std::vectorvec;std::stringmyString;并且我需要使用不区分大小写comaprisons来确定myString是否在vec中。我知道我可以用find(vec.begin(),vec.end(),myString)!=vec.end())回答“myString是否在vec中?”这个问题但这将进行区分大小写的比较。我需要不区分大小写的比较。位置不重要,我只想知道myString是否在vec中。 最佳答案 你需要使用std::tolower和std::find_if:std::vectorvec={"AL

c++ - 为什么 C++ 编译器不区分同名的继承公共(public)方法和继承私有(private)方法?

我很困惑为什么C++编译器不接受这个:classFoo{private:voidBaz(){}};classBar{public:voidBaz(){};classFooBar:publicFoo,publicBar{};voidmain(){FooBarfb;fb.Baz();}gcc给出的错误是:requestformember‘Baz’isambiguouscandidatesare:voidBar::Baz()voidFoo::Baz()但是我想要Bar::Baz()不是很明显吗,因为Foo::Baz()是私有(private)的?为什么编译器不会在这里消除歧义?

C++如何区分容器模板和 native 类型

我有以下问题:templatevoidset(std::stringpath,constTdata){stringstreamss;ssvoidset(std::stringpath,constTdata){std::stringstreamss;for(typenameT::const_iteratorit=data.begin();it我收到以下错误:error:‘templatevoidmyclass::set(std::string,T)’cannotbeoverloadederror:with‘templatevoidmyclass::set(std::string,T)’有

c++ - 不区分大小写的字符串::查找

std::string是否存在不区分大小写的find()方法? 最佳答案 您可以将两个字符串都大写并使用常规查找。(注意:如果您有Unicode字符串,此方法可能不正确。)在Boost中,还有ifind_first用于不区分大小写的搜索。(请注意,它返回一个范围而不是size_t)。#include#include#include#includestd::stringupperCase(std::stringinput){for(std::string::iteratorit=input.begin();it!=input.end(

c++ - 如何区分 sys/sockets.h 中的 bind() 和 std::bind?

我正在使用g++4.6.0编译一些在早期版本中成功编译的C++代码。if(bind(iControl,(structsockaddr*)&sa,sizeof(sa))==-1)throwruntime_error("bind");其中iControl是套接字,sa是structsockaddr_in。但是,在g++4.6中我得到以下错误:comms.cpp:93:66:error:nomatchfor‘operator==’in‘std::bind(_Functor&&,_ArgTypes&&...)[with_Functor=int&,_ArgTypes={sockaddr*,lon

c++ - C++ 中不区分大小写的标准字符串比较

这个问题在这里已经有了答案:Case-insensitivestringcomparisoninC++[closed](30个答案)CaseinsensitivestringcomparisonC++[duplicate](5个答案)关闭8年前。voidmain(){std::stringstr1="abracadabra";std::stringstr2="AbRaCaDaBra";if(!str1.compare(str2)){cout我怎样才能使这项工作?基本上使上述不区分大小写。相关问题我用Google搜索了一下http://msdn.microsoft.com/en-us/l

ios - 在 Swift 3 中将类与具有相同名称的实例成员区分开来

在Swift3中如何区分实例成员和同名的类成员?以前正常工作的现在会在Xcode8beta5中产生错误:"staticmember'textColor'cannotbeusedoninstanceoftypeUITag"publicclassUITag:UILabel{staticvartextColor=UIColor.whiteoverridepublicinit(frame:CGRect){super.init(frame:frame)textColor=UITag.textColor/*error:staticmembercannotbeusedoninstanceoftype