草庐IT

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录一、引用1.1引用概念1.2引用特性1.3常引用1.4使用场景1.4.1做参数1.4.2做返回值1.5引用和指针的区别1.6小结一下二、内联函数2.1内联的概念2.2内联的特性2.3【面试题】三、auto关键字(C++11)3.1类型别名思考3.2auto简介四、auto的使用细则4.1基于范围的for循环(C++11)4.2范围for的使用条件五、指针空值nullptr(C++11)一、引用1.1引用概念C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C+

c++ - 造成这种差异的原因……从 C++ 到 C?

我想知道为什么这种情况一直发生...!!我写了两个程序,一个用c,另一个用c++。两者执行相同的操作。即打印从1到2000000的数字。此外,我在执行开始时设置计时器。在打印所有数字后,还打印了耗时。C++程序的运行时间总是大于C程序。我觉得时间差异很大。我很想知道这是什么原因..????..这是两个程序//iotest.c#include#includeclock_tstart=clock();intmain(){for(inti=0;i//iotest.cpp#include#includeusingnamespacestd;clock_tstart=clock();intmain

c++ - 不稳定类型特征背后的原因是什么?

我今天正在调试一个失败的clang构建。该构建基本上失败了,因为is_default_constructible评估为false。在将问题一分为二几个小时后,我将问题减少到最小的情况:#include#includenamespaceA{//Thishasbeenextractedfromanold(outdated(?))//implementationofanoptionaltypestructempty_t{};templatestructo{public:template::value,bool>::type=false>o(empty_t,U&&...u){}};}struc

c++ - 我不明白在下面的代码中将 char buffer[] 与 X 类型的对象对齐的原因

Stroustrup在他的新书第151页中展示了以下使用类型说明符alignas的示例:Sometimes,wehavetousealignmentinadeclaration,whereanexpression,suchasalignof(x+y)isnotallowed.Instead,wecanusethetypespecifieralignas:alignas(T)means"alignjustlikeaT."Forexample,wecansetasideuninitializedstorageforsometypeXlikethis:voiduser(constvector

c++ - 标准异常层次结构的原因

这是一件很挑剔的事情,可能只是我的强制症发作了,但我想知道为什么标准异常类层次结构是这样设置的。exceptionbad_allocbad_castbad_typeidbad_exceptionios_base::failureruntime_errorsubclasses...logic_errorsubclasses...难道所有的bad_*异常都只是lang_support_error之类的子类吗?而ios_base::failure似乎完全不合适。是否有某些历史或技术原因导致层次结构变成这样? 最佳答案 如果我没记错的话,逻

c++ - 这个 Valgrind 错误的原因是什么?

Valgrind正在提示substr调用。stringMessage::nextField(string&input){intposSeparator=input.find_first_of(SEPARATOR);stringtemp;temp=input.substr(0,posSeparator);//Errorpointstothislineinput.erase(0,posSeparator+1);returntemp;}错误是:12个block中的290个字节肯定丢失在丢失记录1of1该函数所做的基本上是解析输入,返回由SEPARATOR字符分隔的字符串部分。这个函数是从另一

c++ - dlopen 可能出现段错误的潜在原因?

除了共享对象不存在之外,dlopen可能出现段错误的一些原因是什么?在我的例子中,我知道共享对象存在,但是当我的程序使用dlopen加载它时,它会出现段错误。我检查了我的lib文件夹,共享对象在那里,路径都是正确的。handle=dlopen(libraryName.c_str(),RTLD_LAZY|RTLD_GLOBAL);gdbBT:#00x00000000001b94f5in??()#10x00007fffefd96db6in__do_global_ctors_aux()from/usr/local/lib/MY_LIB2.so#20x00007fffefcf82c3in_in

c++ - 指针上的指针 - 性能损失的原因

我回答了thisquestion,并注意到我认为编译器的一种奇怪行为。我首先编写了这个程序(作为我在那里回答的一部分):classVector{private:double**ptr;public:Vector(double**_ptr):ptr(_ptr){}inlinedouble&operator[](constintiIndex)const{return*ptr[iIndex];}};extern"C"inttest(constdoublea);intmain(){doublea[2]={1.0,2.0};Vectorva((double**)&a);doublea1=va[0

c++ - 返回对 std::unique_ptr 的引用的原因

我想知道在C++中是否有合理的理由通过引用返回唯一指针,即std::unique_ptr&?我以前从未真正见过这种技巧,但我的新项目似乎经常使用这种模式。乍一看,它只是有效地打破/规避了“唯一所有权”契约,使得无法在编译时捕获错误。考虑以下示例:classTmContainer{public:TmContainer(){//Createsomesortofcomplexobjectonheapandstoreunique_ptrtoitm_time=std::unique_ptr(newtm());//Storesomethingmeaningfulinitsfieldsm_time-

c++ - dyld : Library not loaded: lib/libopencv_core. 3.0.dylib 原因:找不到图片

我遇到了以下问题:/Users/luke/Desktop/trainHOG/trainhog;导出;dyld:库未加载:lib/libopencv_core.3.0.dylib引用自:/Users/luke/Desktop/trainHOG/trainhog原因:找不到图片跟踪/BPT陷阱:5注销我使用的是运行OSXv10.9.5和openCV3.0alpha的Mac。有问题的库肯定在文件夹中。我尝试删除它并将其粘贴回文件夹中,我已经完全删除并重新安装openCV和macports,并且我尝试了exportDYLD_LIBRARY_PATH="pathtodynamiclibshere