草庐IT

THIS_ARCH

全部标签

c++ - "delete this"是个坏主意吗?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Isitsafetodeletethis?我一直在做一些工作,该类旨在充当链表中的节点,我想我应该为该类提供自己的删除功能,而不是由管理类执行。所以基本上是这样的:voidClass::Delete(){//Somecleanupcodebeforedeletingtheobjectdeletethis;}现在我已经对此进行了测试,它似乎工作正常,但我过去遇到过一个问题,即对象一直处于运行代码的中间,被删除,然后显然通过尝试使用不再存在的对象。由于“删除这个”就在函数的末尾,它显然退出了函数并且工作正常,但是

c++ - 是否可以获得 'this'指针的地址?

我读到this是一个右值,我们无法通过应用&this来获取它的地址。在我的代码中,我尝试使用对this的引用绑定(bind)。我想知道哪种方式会给出this的地址?还是都错了?这个到底是什么?左值、右值、关键字还是其他?voidMyString::test_this()const{std::cout 最佳答案 I'mwonderingwhichmaygivetheaddressofthis?Orbotharewrong?this的地址也不是,因为C++抽象机没有为它定义地址。this类似于0。取不到0的地址,不是有存储的实体,只是一

c++ - 是否可以获得 'this'指针的地址?

我读到this是一个右值,我们无法通过应用&this来获取它的地址。在我的代码中,我尝试使用对this的引用绑定(bind)。我想知道哪种方式会给出this的地址?还是都错了?这个到底是什么?左值、右值、关键字还是其他?voidMyString::test_this()const{std::cout 最佳答案 I'mwonderingwhichmaygivetheaddressofthis?Orbotharewrong?this的地址也不是,因为C++抽象机没有为它定义地址。this类似于0。取不到0的地址,不是有存储的实体,只是一

【是C++,不是C艹】 类与对象 | 认识面向对象 | 访问限定符 | 封装 | this指针

💞💞欢迎来到Claffic的博客💞💞 👉 专栏:《是C++,不是C艹》👈前言:在C++入门之后,就要进入C++的第一个核心:类与对象,这期带大家认识认识面向对象编程,访问限定符,封装以及this指针。注:你最好是学完了C语言,并学过一些初阶的数据结构。(没有目录)ヽ( ̄ω ̄( ̄ω ̄〃)ゝ Part1:面向过程?面向对象?C语言是面向过程的编程语言,在C语言的学习阶段,相信大家都会有这样的感受:为什么能直接用的东西不多,事先要造轮子?对每个过程都要仔细考虑,这一步完不成就进行不了下一步;这或许就是面向过程带来的特性吧,❓那么什么是面向过程呢?这里有个很好的例子🌰:一说到点外卖,你肯定非常熟练了:

c++ - 如何在 C++ 中传递 "this"

我对C++中的this关键字感到困惑,我不确定传递this是否正确。这是我正在努力解决的一段代码:ClassA::ClassA(ClassB&b){b.doSth(this);//tryingtocallb'sroutinebypassingapointertoitself,shouldIuse"this"?}ClassB::doSth(ClassA*a){//dosth} 最佳答案 您使用正确。this指针指向当前对象实例。classhelper{public:voidhelp(worker*pWorker){//TODOdoso

c++ - 如何在 C++ 中传递 "this"

我对C++中的this关键字感到困惑,我不确定传递this是否正确。这是我正在努力解决的一段代码:ClassA::ClassA(ClassB&b){b.doSth(this);//tryingtocallb'sroutinebypassingapointertoitself,shouldIuse"this"?}ClassB::doSth(ClassA*a){//dosth} 最佳答案 您使用正确。this指针指向当前对象实例。classhelper{public:voidhelp(worker*pWorker){//TODOdoso

c++ - 常量不匹配 : 2 overloads have no legal conversion for 'this' pointer

我收到了这个奇怪的错误:errorC2663:'sf::Drawable::SetPosition':2overloadshavenolegalconversionfor'this'pointer我认为这与const不匹配有关,但我不知道在哪里,或者为什么。在下面的代码中,我有一个形状和Sprite的vector,当尝试访问其中一个vector形状并调用它的一个函数时,我遇到了错误。std::vectorShapes;std::vectorSprites;boolAddShape(sf::Shape&S){Shapes.push_back(S);returntrue;};boolAdd

c++ - 常量不匹配 : 2 overloads have no legal conversion for 'this' pointer

我收到了这个奇怪的错误:errorC2663:'sf::Drawable::SetPosition':2overloadshavenolegalconversionfor'this'pointer我认为这与const不匹配有关,但我不知道在哪里,或者为什么。在下面的代码中,我有一个形状和Sprite的vector,当尝试访问其中一个vector形状并调用它的一个函数时,我遇到了错误。std::vectorShapes;std::vectorSprites;boolAddShape(sf::Shape&S){Shapes.push_back(S);returntrue;};boolAdd

c++ - 从 'enable_shared_from_this' 派生一个类可以提高性能吗?

make_shared比单独调用new并创建shared_ptr性能更高,因为make_shared为引用分配空间在与客户端对象实例相同的内存块中计数和弱计数(有效地为shared_ptr提供了intrusive_ptr的大部分性能优势)。enable_shared_from_this给出一个共享指针,而不引用任何共享指针。因此,必须以某种方式从客户端对象内部访问诸如引用和弱计数之类的东西。因此,enable_shared_from_this导致类似于make_shared的侵入性计数是明智的。但是,我不知道如何实现类似的东西(即使我查看实际来源,我也不确定我是否会关注其中发生的事情)

c++ - 从 'enable_shared_from_this' 派生一个类可以提高性能吗?

make_shared比单独调用new并创建shared_ptr性能更高,因为make_shared为引用分配空间在与客户端对象实例相同的内存块中计数和弱计数(有效地为shared_ptr提供了intrusive_ptr的大部分性能优势)。enable_shared_from_this给出一个共享指针,而不引用任何共享指针。因此,必须以某种方式从客户端对象内部访问诸如引用和弱计数之类的东西。因此,enable_shared_from_this导致类似于make_shared的侵入性计数是明智的。但是,我不知道如何实现类似的东西(即使我查看实际来源,我也不确定我是否会关注其中发生的事情)