草庐IT

弱引用

全部标签

c++ - 是否有关于更换 MS CRT 的最新引用资料?

我用过this作为引用,但它似乎并不完整。当我设置/NODEFAULTLIB时,我收到有关缺少__except_list、__load_config_used以及其他一些显然与SEH相关的内容的链接器错误。很容易让_CxxThrowException和friend正确链接,但我不知道__except_list应该是什么,我不知道从哪里开始寻找。我同时使用MSC和IC。使用IC时,链接器报告__except_list丢失,但MSC不是这种情况。对于那些最喜欢回答“为什么?”的人来说:这是因为我想知道它是如何工作的,而且我厌倦了无所事事地测试应用程序,一开始就毫无理由地提交300kb。

c++ - 在 C 中存储对 Lua 值的引用,如何实现?

例如,假设我有一个键处理接口(interface),在C++中定义为:classKeyBoardHandler{public:virtualonKeyPressed(constKeyEventArgs&e);virtualonKeyReleased(constKeyEventArgs&e);}现在,我想将它扩展到Lua,让Lua可以利用并在脚本中注册一个KeyboardHandler。这是到目前为止的原型(prototype)。classScriptKeyboardHandler:publicKeyboardHandler{public:...previousmethodsomitte

c++ - 复制构造函数的存在导致函数通过引用而不是值返回

在下面的代码中,它打印出两个不同的内存位置。这对我来说很有意义,因为我按值(value)返回。#includeusingnamespacestd;classFoo{public:Foo(){}//Foo(constFoo&){cout但是,如果我在上面的代码中取消注释复制构造函数并再次运行它,它会输出相同的内存位置两次。为什么?它根本不打印出“Copycon”,所以我知道没有调用复制构造函数。复制构造函数的存在似乎会导致某种优化,即使它没有被调用。我正在GCC4.6.3上使用“g++-Walltest.cpp-otest”进行编译。 最佳答案

c# - 数组或对象的指针/引用句柄会影响其大小吗?

我知道,如果我有一个数组intA[512],那么引用A可以指向第一个元素。在指针运算中,内存被引用为A+index。但如果我没记错的话,指针/引用也会占用一个机器字空间。假设一个int占一个机器字,是不是意味着上面数组的512个整数占了513个字的空间?C++或C#中的对象及其数据成员是否相同?更新:哇,你们真快。澄清一下,我感兴趣的是C++和C#在处理此问题的方式上不同,以及我如何调整对象大小以适合缓存行(如果可能)。更新:我已经意识到指针和数组之间的区别。我知道数组不是指针,我上面引用的指针算法只有在数组转换为指针后才有效。但是,我认为这种区别与整个问题无关。我对数组和其他对象在C

c++ - 无法重载对 *this 的引用

这是我为N2439(“this”的引用限定符)使用gcc-4.8.1+中的新功能(我认为clang-2.9+也应该这样做)编写的一个busybox:classFoo{public:Foo(inti):_M_i(i){}intbar()&{return_M_i/=2;}intbar()const&{return_M_i;}intbar()&&{return2*_M_i;}private:int_M_i=42;};intmain(){Fooph(333);ph.bar();constFooff(123);ff.bar();Foo(333).bar();}在阅读标准8.3.5时,我认为三个b

c++ - 最令人烦恼的解析和指针间接/解引用

最少的代码:structA{A(int=0){}};inti=0,*p=&i;int*foo(){returnp;}intmain(){A();//calls`A::A(int=0)`A(i);//calls`A::A(int=0)`A(*p);//预计至少A((*p))会调用A::A(int=0)。即使在*p周围放置多个大括号,也会将语句视为A*p;。foo相关语句也是如此,其中构造函数A::A(int=0)没有被调用。这是一个demo.问题:为什么连(2)和(4)都被视为声明?语句(3)和(4)中foo的描述是什么? 最佳答案

c++ - 通过 const 引用延长临时生命周期

C++我正在尝试了解const引用如何延长临时对象的生命周期。我正在运行oneoftheanswerstoWhatarethedifferencesbetweenpointervariableandreferencevariableinC++?中的代码片段并在VC11和g++4.8之间得到了冲突的结果。我在这里扩展了代码段:#includestructscope_test{~scope_test(){printf("scope_testdone!\n");}};intmain(){constscope_test&test=scope_test();printf("inscope\n")

c++ - 更新版本化的 .NET 程序集引用

我有一个需要引用.NET程序集的C++/CLI项目。我是通过进入项目属性并单击“添加新引用”,然后浏览到程序集位置(它不是解决方案的一部分,所以我无法创建项目到项目引用,并且.NET程序集不在GAC中,因此在查看要添加的引用时它不在.NET选项卡中)当.NET程序集更新时(即,由于它是版本化的,它会每天增加其版本号),C++/CLI项目无法编译,因为它仍在引用旧版本。我一直在做的解决方法是删除.NET引用并将其重新添加进去,但这是不可行的。我如何让它识别较新的程序集??注意:较旧的程序集被较新的程序集替换,所以它在同一位置,但不知道它应该使用较新的版本。 最

c++ - 错误 C2662 无法从 const 转换为引用

这是我关于堆栈溢出的第一篇文章,我希望将来能加入社区。我正在为ADT类编写哈希表实现;我的大部分方法都在作业范围内达到了标准,但这让我很伤心。在这个我一直用来测试我编写的各种函数的测试应用程序中,我收到错误“errorC2662:'customer::getPhone':cannotconvert'this'ponterfrom'constcustomer'to'customer&'引用行“光标=find_ptr(entry.getPhone());”和“list_head_insert(data[hash(entry.getPhone())],entry);”我的函数实现代码如下:t

c++ - 存储右值引用 : should this work?

我正在通过故意破坏事物来测试我对左值和右值引用的理解。所以说有这个结构:structFooBar{FooBar(int&&number):rNumber(number){}int&rNumber;};然后我创建了一个实例FooBarobj(5)。每次尝试读取引用变量都会返回正确的结果(5)。如果我使用constint&而不是int&&,也会发生同样的情况。我注意到将int替换为std::string并读取引用会返回一个空字符串,因此我怀疑它给出了未定义的行为。是这样吗?如果是这样,为什么它适用于整数?更新:我正在创建实例并像这样读取它:FooBarobj(5);//FooBarobj(