草庐IT

this_record

全部标签

C++ operator= 返回对 *this 的引用

看下面的代码:#includeusingnamespacestd;classWidet{public:Widet(intval=0):value(val){}Widet&operator=(Widet&rhs){value=rhs.value;return*this;}intgetValue(){returnvalue;}private:intvalue;};intmain(){Widetobj1(1);Widetobj2(2);Widetobj3(0);(obj3=obj2)=obj1;cout代码运行成功,输出为(使用VS2008):当我让operator=返回一个值而不是引用时:

c++ - 在派生对象到基类的 "this"指针上使用 static_cast 的问题

这是取自EffectiveC++3ed的一个例子,它说如果这样使用static_cast,对象的基础部分被复制,并且调用从该部分调用。我想了解幕后发生的事情,有人会帮忙吗?classWindow{//baseclasspublic:virtualvoidonResize(){}//baseonResizeimpl};classSpecialWindow:publicWindow{//derivedclasspublic:virtualvoidonResize(){//derivedonResizeimpl;static_cast(*this).onResize();//cast*thi

c++ - 那么 "this"的类型是什么?为什么 "this"不是左值?

假设对象是classA{public:voidSilly(){this=0x12341234;}我知道我会得到编译器错误““this”不是左值。”但那也不是暂时的。那么“this”的假设声明是什么?编译器:Mac上的GCC4.2编译器。 最佳答案 对于某些X类,this类型为X*this;,但你不允许分配给它,所以即使它实际上没有类型X*constthis,就阻止分配而言,它的行为几乎就像它一样。正式地,它是prvalue,这与类似整数文字的类别相同,因此尝试分配给它大致等同于尝试为'a'分配不同的值。或10.请注意,在早期C++中

类型问题将``this`作为参数''转到超载方法

我遇到了一些奇怪的行为,称其在继承链中列出了一个过载的虚拟方法,该方法扩展了最终保存WPF窗口类的视图。超载方法将更派生的界面作为参数,但该调用似乎使较小的派生接口参数的方法成为了。以下是该视图的继承链的相关部分,我期望将IWPfWindow作为参数的被覆盖方法称为:publicclassEmbeddedBrowserWpfView:WpfView{protectedIEmbeddedWpfBrowserBrowser{get;}protectedIEmbeddedWpfBrowserFactoryBrowserFactory{get;}protectedEmbeddedBrowserWpfV

java - "this"的重要性

我正在使用cocos2dx在C++中进行编程,并在添加Sprite或对象时,this->addChild(something)和addChild(something)有效。两种方式都得出相同的结果。但不仅在c++中,this也在android编程中使用(也许,所有编程语言都使用“this”?)。我在Java中使用它来用简单的this替换ClassName.class。但除此目的外,this还用于许多方面。但是因为我没有深入研究编程语言,所以我不知道它们是否真的做同样的工作(this->addChildvs.addChildANDClassName.class与this)。为什么我们需要

c++ - 为什么 this 不能作为成员函数中的默认参数传递?

我试图将长度的当前值作为默认参数作为函数参数传递。但是编译器显示错误"'this'maynotbeusedinthiscontext"谁能告诉我我犯了什么错误。?classA{private:intlength;public:A();voiddisplay(intl=this->length){cout 最佳答案 您的成员函数:voiddisplay(intl=this->length)在概念上等同于:voiddisplay(A*this,intl=this->length);//translatedbythecompiler这意味

c++ - 即使正确使用 make_shared,shared_from_this() 也会导致 std::bad_weak_ptr

我正在使用独立的Asio和C++11创建一个C++服务器应用程序,但遇到错误,这就是我寻求帮助的原因。错误在类里面worker_thread,在通话期间shared_from_this(),一个bad_weak_ptr引发异常,导致程序崩溃。布局类(class)connection_manager创建并存储std::shared_ptr类型的对象在std::vector里面容器类(class)worker_thread继承自std::enable_shared_from_this.类(class)worker_thread创建std::shared_ptr类型的对象.类(class)c

c++ - Superclass::method 或 this-> 方法之间的区别

如何以及何时调用父类(superclass)方法?两个选项请引用代码段:classSuperClass{public:voidmethod();};classSubClass:publicSuperClass{public:voidsomeOtherMethdo(){this->method();SuperClass::method();}}; 最佳答案 使用this->method()调用一个函数,该函数要么在您的父类(superclass)中实现,要么由您自己的类实现。当使用superClass::method()时,您一定要调

c++ - "this"级联如何工作?

我有以下类接口(interface):classTime{public:Time(int=0,int=0,int=0);Time&setHour(int);Time&setMinute(int);Time&setSecond(int);private:inthour;intminute;intsecond;};实现在这里:Time&Time::setHour(inth){hour=(h>=0&&h=0&&m=0&&s在我的主.cpp文件中,我有这段代码:intmain(){Timet;t.setHour(18).setMinute(30).setSecond(22);return0;}

c++ - 我可以使用 memcpy(*this) 修改构造函数中的所有类成员吗?

structSomething{inta;intb;Something(char*buffer){memcpy(this,buffer,sizeof(Something));};};这合法吗?安全的?对我来说它看起来不错,但我不确定C++标准是否以某种方式禁止它。 最佳答案 ...fromthefactthatit'snolongeraPODtypeafterIaddedtheconstructor.这不是事实(只是假新闻;-))。添加构造函数不会更改struct的POD类型状态。您还可以使用static_assert轻松检查:st