object-lifetime相关内容
Another question引用C++标准: 3.8/1&q;类型T的对象的生存期在以下情况结束:-如果T是具有非平凡析构函数的类类型(12.4),则析构函数调用 开始,或者-对象占用的存储被重复使用,或者 已发布。&Quot; 这似乎意味着不允许从析构函数访问对象的成员。然而,这似乎是错误的,事实更像是Kerrek SB的回答中所解释的: 成员对象在构造函数体运行之前激活,
..
我的一个朋友给我看了一个C++20的程序: #include struct A { A() {std::cout
..
char f1();无效 f2(char&);结构 A {};一个 f3();无效 f4(A&);主函数(){f2(f1());//错误 C2664.这正如预期的那样.f4(f3());//行!为什么???} 错误 C2664: 'void f4(char &)' : 无法从 'char' 转换参数 1到 'char &' 有人告诉我,在 C++ 中,非常量引用参数不能绑定到临时对象;而在
..
..
如果某个函数 f 带有参数 p_1, ..., p_n 类型为 T_1, ..., T_n 分别用参数 a_1, ..., a_n 调用,其主体以什么顺序抛出异常、完成或返回论据被破坏了吗?为什么?如果可能,请提供对标准的参考. 编辑:我实际上想问一下函数“参数",但作为 T.C.Columbo 设法消除了我的困惑,我将把这个问题留给论点,并问 一个关于参数的新问题.请参阅对此问题的评论以了
..
我正在考虑创建一个表示同步原语的所有权的类,如下所示: 类 CCriticalSectionLock{上市:CCriticalSectionLock(CCriticalSection &cs):cs(cs){ cs.Enter();}~CCriticalSectionLock(){ cs.Leave();}私人的:CCriticalSection &cs;}; 这看起来是一种能够在函数期间取得
..
我计划在 C++ 中实现一个事物列表,其中元素可能会被乱序删除.我不希望我需要任何形式的随机访问(我只需要定期扫描列表),并且项目的顺序也不重要. 所以我想到了std::list使用 this->position = insert(lst.end(), thing) 应该可以解决问题.我希望 Thing 类记住每个实例的位置,以便我以后可以在恒定时间内轻松地执行 lst.er
..
C++ 中的对象究竟是什么时候销毁的,这意味着什么?由于没有垃圾收集器,我是否必须手动销毁它们?异常如何发挥作用? (注意:这是 Stack Overflow 的 C++ 常见问题解答的一个条目.如果你想批评以这种形式提供一个常见问题解答,然后 开始发布在 meta 上所有这些都是这样做的地方.该问题的答案在 C++ 聊天室,FAQ 想法最初是从这里开始的,所以你的答案很可能会被提出这个想法
..
char f1();void f2(char&);结构体{};一个 f3();void f4(A&);int main(){f2(f1());//错误 C2664.这正如预期的那样.f4(f3());//行!为什么???} 错误 C2664:“void f4(char &)":无法从“char"转换参数 1'char &' 我被教导在 C++ 中,非常量引用参数不能绑定到临时对象;在上面的
..
我正在回答一个关于关闭可能性的问题(合法地)当我在 C# 编译器方面遇到一些非常 奇怪的代码生成时,延长对象生命周期(4.0,如果这很重要). 我能找到的最短的repro如下: 创建一个 lambda,在调用包含类型的 静态 方法时捕获本地. 将生成的委托引用分配给包含对象的实例字段. 结果:编译器创建一个引用创建 lambda 的对象的闭包对象,当它没有理由 - 委托的“内部
..
我在 MEF 的部件生命周期中遇到了一些问题,这会导致我的 Prism 应用程序出现内存泄漏. 我的应用程序导出视图和视图模型,其中 PartCreationPolicy 设置为 CreationPolicy.NonShared.视图和视图模型分别继承自 ViewBase 和 ViewModelBase,它们实现了 IDisposable. 现在,由于我的部分实现了 IDisposab
..
以下代码抛出 std::bad_cast struct Foo {void foo() {}};结构栏{酒吧 () {dynamic_cast (*this) .foo();}虚拟~吧(){}};struct Baz : 公共 Foo, 公共栏 {};int主(){巴兹 b;} 我记得曾经读过 dynamic_cast 如何权衡实现性能,因为“它遍历完整的继承格"以便正确评估.这
..
我正在按照下面链接的示例设置统一以使用我的服务层.我的项目设置与本文中的项目非常相似,除了在注册服务依赖项时使用 PerThreadLifetimeManager 的确切原因之外,我了解所有内容.请记住,我还使用了一个通用存储库和工作单元,它也在我的服务层中使用.大多数统一示例使用默认(瞬态)生命周期管理器,并且由于我的设置类似于下面的设置,我想知道为什么我应该使用 PerThreadLifeim
..
按照这个答案我现在想知道规则是什么lambdas 的生命周期以及它与自动转换创建的函数指针的生命周期的关系.关于 lambdas 的生命周期有几个问题(例如 此处和此处),在这种情况下答案是“它们的行为与您自己编写的完整函子对象完全一样",但是两者都没有解决转换为函数指针的问题,这可能是一种非常明智的特例. 我整理了这个小例子来说明我的担忧: #include typedef int (*
..
C++ 中的对象究竟何时被销毁,这意味着什么?由于没有垃圾收集器,我是否必须手动销毁它们?异常如何发挥作用? (注意:这是Stack Overflow 的 C++ 常见问题解答的条目.如果您想批评以这种形式提供常见问题解答,然后 开始在元数据上发帖所有这些都可以做到这一点.C++ 聊天室中监控该问题的答案a>,FAQ 的想法最初是从这里开始的,因此您的答案很可能会被提出该想法的人阅读.)
..
嗨,嵌套 try & 的最佳方法是什么?delphi 中的 finally 语句? var cds1 : TClientDataSet;cds2 : TClientDataSet;cds3 : TClientDataSet;cds4 : TClientDataSet;开始cds1 := TClientDataSet.Create(application);尝试cds2 := TClientDat
..
我已通过 C++/CLI 包装器将 C++ 成员函数 作为回调传递给 C# 项目(这很好用).C# 项目将在从另一个 .exe 进程接收数据时调用此委托:将引发一个事件并且一个方法将调用此回调.因此,我需要使用已经创建的 C# 类的静态实例来“保存"这个 Action 委托.我得到以下代码: //C++ 非托管函数WRAPPER_API void dispatchEvent(std::funct
..
我有一个 Delphi 表单,它提供接口对象背后的功能,代码的其他部分也通过属于表单的属性获取引用.我无法将界面功能委托给子对象,因为该功能中有太多是由表单上的控件/组件提供的.我不能使用 TAggregatedObject 或 TContainedObject 来链接传递给 Form 的接口对象的生命周期,因为 TForm 类不是从 TinterfacedObject 继承的,而且 Delphi
..
我有一个包含纯虚函数的基类 MyBase: void PrintStartMessage() = 0 我希望每个派生类都在它们的构造函数中调用它 然后我把它放在基类(MyBase)构造函数中 类 MyBase{民众:虚拟无效 PrintStartMessage() =0;我的基地(){打印开始消息();}};派生类:公共 MyBase{民众:void PrintStartMe
..
我有一个包含纯虚函数的基类 MyBase: void PrintStartMessage() = 0 我希望每个派生类都在它们的构造函数中调用它 然后我把它放在基类(MyBase)构造函数中 类 MyBase{民众:虚拟无效 PrintStartMessage() =0;我的基地(){打印开始消息();}};派生类:公共 MyBase{民众:void PrintStartMe
..