草庐IT

THIS_ARCH

全部标签

c++ - enable_shared_from_this 和 make_shared 是否提供相同的优化

据我了解make_shared(...)可以提供一些内存分配优化(它可以在与类T的实例相同的内存块内分配引用计数器)。enable_shared_from_this是否提供相同的优化?所以:classT:std::enable_shared_from_this{};...autot=std::shared_ptr(newT);等同于:classT{};...autot=std::make_shared();如果不考虑sizeof(T)。 最佳答案 Doenable_shared_from_thisprovidesthesameopt

c++ - 'this' 是否保证指向 C++ 中对象的开头?

我想使用fwrite将对象写入顺序文件。类(class)就像classA{inta;intb;public://interface}当我将对象写入文件时。我在想我能否使用fwrite(this,sizeof(int),2,fo)来写前两个整数。问题是:this是否保证指向对象data的开始,即使可能存在虚拟表对象的最开始。所以上面的操作是安全的。 最佳答案 this提供对象的地址,不一定是第一个成员的地址。唯一的异常(exception)是所谓的标准布局类型。来自C++11标准:(9.2/20)Apointertoastandard

c++ - this 和 this@entry 的区别?

我最近开始使用Eclipse-CDT,并对调试透视图中变量窗口中的“this”和“this@entry”感到好奇。它们都具有相同的内存地址并且看起来相同,但为什么要包含两者呢?'this@entry'是否意味着在函数内的某个断点处表示'this'的状态?'this@entry'下表示的值是否超出范围,可以这么说,并在函数返回时更新'this'?team1,2和currentMatch是我正在调试的类的全局变量,断点在该类的成员函数中。 最佳答案 @entry形式是指函数进入时参数的值。这并不总是可用,但有时是可用的——它有一个DWA

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”指针。这在标准中吗?

C++ "was not declared in this scope"编译错误

C++新手。在我编写的以下程序中出现此错误:g++-oBlobblob.ccblob.cc:Infunction'intnonrecursivecountcells(color(*)[7],int,int)':blob.cc:41:error:'grid'wasnotdeclaredinthisscope代码如下:#includeenumcolor{BACKGROUND,ABNORMAL,TEMPORARY};constintROW_SIZE=7;constintCOL_SIZE=7;intnonrecursivecountcells(color[ROW_SIZE][COL_SIZE]

c++ - 在基本构造函数完成之前传递 `this` : UB or just dangerous?

考虑这个最小的例子(我能想到的):structBar;structFoo{Bar*constb;Foo(Bar*b):b(b){}};structBar{Foo*constf;Bar(Foo*f):f(f){}};structBaz:Bar{Baz():Bar(newFoo(this)){}};当将this传递给Foo的构造函数时,Baz的层次结构中没有任何内容被创建,但Foo和Bar对它们接收到的指针做任何有问题的事情。现在的问题是,以这种方式泄露this是危险的还是未定义的行为?问题2:如果Foo::Foo(Bar*)是具有相同语义的Foo::Foo(Bar&)会怎么样?我必须传递

c++ - 捕获 const this

现在我有一个带有lambda的对象函数,为了使用我必须的成员函数和变量(或者当然捕获所有......):voidMyClass::MyFunc(){automyLambda=[this](){...};}有没有办法明确声明捕获constthis?我知道我可以:voidMyClass::MyFunc(){MyClassconst*const_my_class=this;automyLambda=[const_my_class](){...};}谢谢。 最佳答案 根据标准(N3485)中的§5.1.2,lambda-capture的定义

c++ - "this"指针在堆栈跟踪中损坏

我看过this线。我的情况略有不同,我正在努力弄清楚“this”指针是如何损坏的。我正在使用Qt4.6.2框架,将他们的QTreeView与我自己的模型一起使用。我得到的回溯(86帧长,有很多递归,这就是为什么我没有粘贴整个东西,它在这个pastebin中只涉及他们的代码。它最终在QBasicAtomicInt::deref中的某些汇编器上出现段错误,但很明显它已经进一步消失,这三个框架证明了这一点:#150x01420fd3inQFrame::event(this=0x942bba0,e=0xbf8eb624)atwidgets/qframe.cpp:557#160x014bb382

c++ - 为什么我得到cc1plus : error: unrecognized command line option "-arch"?

/usr/bin/make-fnbproject/Makefile-Debug.mkSUBPROJECTS=.build-conf/usr/bin/make-fnbproject/Makefile-Debug.mkdist/Debug/GNU-MacOSX/cppapplication_1mkdir-pbuild/Debug/GNU-MacOSXrm-fbuild/Debug/GNU-MacOSX/main.o.dg++-archi386-c-g-MMD-MP-MFbuild/Debug/GNU-MacOSX/main.o.d-obuild/Debug/GNU-MacOSX/main.