草庐IT

弱引用

全部标签

c++ - 为什么转换为引用会干扰到 bool 值的转换?

似乎如果我有一个指向引用的转换运算符,这个运算符将优先于转换为bool。为什么会发生这种情况,我该如何解决?(如果重要的话,我使用的是GCC4.5。我在ideone上验证了GCC-4.7.2发现了相同的行为。)假设如下:classB{protected:constinta_;intb_;B(intb,inta):a_(a),b_(b){}public:operatorbool()const{returnb_==a_;}};classD1:publicB{public:D1(intb=0,inta=0):B(b,a){}operatorint()const{returnb_;}};cla

c++ - 通过构造函数传递和存储 const 引用?

这可能是一个简单的问题,但我坚持了下来。我试图通过它的构造函数将一个对象从ObjectA传递给ObjectB(它是ObjectA的成员)。但是,我不想按值传递,而是只想传递一个const引用并无限期地存储该引用。问题是我不确定该怎么做。我可以像这样使用指针让它工作:classClassB{private:int*ptrInternalX;public:ClassB(int*tempX);}ClassB::ClassB(int*tempX){ptrInternalX=tempX}这样,一个对象被创建并传递一个指向int的指针,该指针被存储在类中供以后使用。但是,指针让我担心在使用较大的对

c++ - 理解字符引用

我编写了这个简单的脚本来理解引用是什么,但我被char数组卡住了。intnumbers[5]={3,6,9,12,15};for(inti=0;i这是输出:30xbffff95860xbffff95c90xbffff960120xbffff964150xbffff968--------------aabcdebbcdeccdeddee对于int数组,当我使用&numbers[i]时,我收到一个奇怪的数字,它是一个内存位置。还行吧;这正是我所理解的。但是对于char,我不明白为什么我有这个输出。 最佳答案 原因是cout“知道”如何处

c++ - C++ OO 风格的引用计数

我在C++FAQ上遇到了一个有趣的基类实现根据我天真的理解,它可以作为某些智能指针实现(例如shared_ptr)的替代品。这是逐字的示例代码,但请点击上面的链接以获得解释:classFred{public:staticFredcreate1(std::stringconst&s,inti);staticFredcreate2(floatx,floaty);Fred(Fredconst&f);Fred&operator=(Fredconst&f);~Fred();voidsampleInspectorMethod()const;//Nochangestothisobjectvoidsa

c++ - 为什么我们需要在 move 构造函数中将右值引用设置为空?

//codefromhttps://skillsmatter.com/skillscasts/2188-move-semanticsperfect-forwarding-and-rvalue-referencesclassWidget{public:Widget(Widget&&rhs):pds(rhs.pds)//takesource’svalue{rhs.pds=nullptr;//why??}private:structDataStructure;DataStructure*pds;};我无法理解将rhd.pds设置为nullptr的原因。如果我们删除这一行会发生什么:rhs.p

c++ - 模板模板参数和转发引用

假设我们有以下代码:templateclassC{};templateclassContainer>voiddummyMe(Container&&){};intmain(intargc,char*argv[]){Cc;dummyMe(c);return0;}由于第一个dummyMe而无法编译参数是右值引用。有人可以用Standardese向我解释为什么模板模板参数与转发引用不一致,为什么用简单的英语就是这样。附言我偶然发现了this和that问题,但我没有在答案中看到任何真正的证据。上面链接的答案和这个问题的答案断言Container不能算作模板参数。我看不出为什么会这样。让我们让这个

c++ - std::vector 插入对象的拷贝或引用?

假设我有一个动态分配的对象。如果我将其放入STLvector中,是否会将引用插入vector或该对象的拷贝中?这是一个普遍的问题。例如:classvec{vectorvec;voidaddToVec(obja){//insertaintovec}.........}obj*a=newobj;vec*v=newvec;vec.addToVec(a);如果我删除v,是否也会反对骰子? 最佳答案 willareferencebeinsertedintothevectororacopyofthisobject?复制(这意味着您的class应

c++ - 在初始化列表中引用类成员是未定义的行为吗?

假设我有以下内容:classA{Bmember1;Cmember2;public:A();};classB{public:C&ref_to_c;B(C&ref_to_c);};classC{...};B要求在其构造函数中提供对C的引用。如果A类提供C,那么指定A的初始化列表如下是否合法...A():member1(B(member2)){}也就是说,member2是否存在于initialiserlist阶段,还是这个undefinedbehavior? 最佳答案 初始化如下:5Initializationshallproceedin

c++ - 为什么 C++ 中的 "this"指针是指针而不是引用?

为什么C++中的this指针是指针而不是引用?是否有我遗漏的用例使“this”作为指针比引用更有用?如果不是,将其用作指针是否涉及任何语言设计影响/注意事项? 最佳答案 来自BjarneStroustrup'sC++StyleandTechniqueFAQ:Whyisthisnotareference?BecausethiswasintroducedintoC++(reallyintoCwithClasses)beforereferenceswereadded.Also,IchosethistofollowSimulausage,r

c++ - 为什么 'this' 关键字不是 C++ 中的引用类型

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:Why‘this’isapointerandnotareference?SAFEPointertoapointer(wellreferencetoareference)inC#C++中的this关键字获取指向我当前所在对象的指针。我的问题是为什么this的类型是指针类型而不是引用类型。this关键字是否为NULL?我的直接想法是在静态函数中,但至少VisualC++足够聪明,可以发现这一点并报告静态成员函数没有“this”指针。这在标准中吗?