草庐IT

Base_Type

全部标签

c++ - C/C++ 指针,ptr+1 = ptr +1 byte 还是 ptr+1*sizeof(pointer_type)?

有any_type*ptr=(any_type*)malloc(sizeof(any_type)*size);my_ptr=ptr+1;memcpy(dst,my_ptr,sizeof(any_type));my_ptr会指向ptr之后的1个字节,还是指向ptr之后的sizeof(any_type)字节?对齐选项如何影响答案?有符号/无符号类型是否不同? 最佳答案 指针运算是在指针的静态类型[*]的大小上进行的,所以它会有效地添加sizeof*ptr。成员的对齐方式将作为类型的对齐方式(对象末尾的填充)考虑到对象的大小。struct

c++ - 将 Derived** 转换为 Base** 并将 Derived* 转换为 Base*

好的,我正在通读thisentryintheFQA处理将Derived**转换为Base**的问题以及为什么它被禁止,我得到的问题是你可以分配给Base*不是Derived*的东西,所以我们禁止这样做。到目前为止,还不错。但是,如果我们深入应用该原则,我们为什么不禁止这样的例子呢?voidnasty_function(Base*b){*b=Base(3);//Ouch!}intmain(intargc,char**argv){Derived*d=newDerived;nasty_function(d);//Ooops,now*dpointstoaBase.Whatwouldhappen

c++ - 初学者 c++ : virtual functions in a base class

我正在编写一些代码,其中我定义了以下基类。classChorus{public://Destructorvirtual~Chorus();//callbackfunctionvirtualintcallback(void*outputBuffer,void*notUsed,unsignedintnBufferFrames,doublestreamTime,RtAudioStreamStatusstatus,void*userData);virtualvoidinitializeDelayBuffer(void);virtualvoiddestroyDelayBuffer(void);}

C++ STL type_traits 问题

我在看最新的C9lecture并注意到一些有趣的事情..在他对type_traits的介绍中,Stephan使用了以下(如他所说,人为的)示例:templatevoidfoo(Tt,true_type){std::coutvoidfoo(Tt,false_type){std::couttemplatevoidbar(Tt){foo(t,typenameis_integral::type());}这似乎比:复杂得多templatevoidfoo(Tt){if(std::is_integral::value)std::cout后一种做法有问题吗?他的方法更好吗?为什么?谢谢。

c++ - 如何摆脱 - 来自 NULL 的 "warning: converting to non-pointer type ' 字符”?

我有这段代码:intmyFunc(std::string&value){charbuffer[fileSize];....buffer[bytesRead]=NULL;value=buffer;return0;}行-buffer[bytes]=NULL给我一个警告:convertingtonon-pointertype'char'fromNULL。我如何摆脱这个警告? 最佳答案 不要使用NULL?它一般是为指针保留的,你没有指针,只有一个简单的char。只需使用\0(空终止符)或简单的0。

c++ - `void func() throw(type)` 有什么意义?

我知道这是一个有效的C++程序。函数声明中的throw有什么意义?据我所知,它什么都不做,也不用于任何事情。#includevoidfunc()throw(std::exception){}intmain(){return0;} 最佳答案 它指定任何std::exception都可以从func()中抛出,除此之外别无他法。如果抛出其他东西,它将调用一个unexpected()函数,该函数默认调用terminate()。这意味着抛出其他东西几乎肯定会以与未捕获异常相同的方式终止程序,但实现必须强制执行此操作。这通常与在func()周围

c++ - 无法在 VS 14 CTP : conditional expression of type 'void' is illegal 中使用 auto 声明 lambda

使用VisualStudio2014CTP、C++(v140)编译器:autogp=[&](BYTE*buff){autogp1=[](char*bff,char**p1){*p1=strstr((char*)bff,"(");return(*p1);};};错误:conditionalexpressionoftype'void'isillegal(也许auto真的输入错误?)如果我将内部lambda声明为std::functiongp1然后就可以了是我做错了什么还是编译器错误? 最佳答案 我没有运行2014,但您可能需要指定内部l

c++ - 使用 ios_base::register_callback() 和 ios_base::event 检测流关闭

我有一个返回unique_ptr的API给API用户。我想知道用户何时完成此流,以便我可以对他们刚刚写入的文件采取进一步的操作。必须关闭该文件,因为即将重新挂载分区。这可能是这个问题的错误解决方案,但就在我返回流之前,我用register_callback()注册了一个回调。:std::unique_ptros(newstd::ofstream(name,std::ofstream::out|std::ofstream::trunc|std::ofstream::binary));os->register_callback(done_callback,0);returnos;回调在别处

c++ - 使用前向声明时如何修复 "field has incomplete type"错误

如注释中所述,此代码抛出编译器错误error:field‘fTarget’hasincompletetype。为什么会这样?我只是分配那个字段而不做任何需要知道里面是什么的操作......或者我是?也许它无法弄清楚复制构造函数?classFSRVertex;//fwdclassFSREdge{public:charfC;FSRVertexfTarget;//compilererrorFSREdge(charc,FSRVertextarget):fC(c),fTarget(target){}//compilererror};classFSRVertex{public:boost::uno

图片Base64编码解码的优缺点及应用场景分析

随着互联网的迅猛发展,图片在网页和移动应用中的使用越来越广泛。而图片的传输和加载往往是网页性能的瓶颈之一。为了解决这一问题,图片Base64编码与解码技术应运而生。本文将介绍图片Base64相互转换的优缺点,以及它可以解决的问题和适用的方面,并提供完整的JavaScript示例。图片Base64相互转换|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.com/img2base64一、图片Base64编码与解码的优点减少HTTP请求:将图片转换为Base64编码后,可以直接嵌入在网页的HTML、CSS或JavaScript中,避免了额外的HTTP请求,提高