初始化器到底什么时候被临时销毁?
我今天构建了这个实验,在回答了一些问题之后, struct A { bool &b A(bool &b):b(b) { } ~A() { std::cout << b } bool yield() { return …
SWIG 的 Python 包装器中临时对象的生命周期(?)
2 月 12 日编辑 我最近刚刚使用一些 SWIG 生成的 Python 包装器来处理一些 C++ 类,结果出现了奇怪的崩溃。看来 SWIG 和 Python 的结合有点急于清理临…
禁止实例化为临时对象 (C++)
我喜欢在 C++ 中使用哨兵类,但我似乎有一种精神上的痛苦,导致重复编写如下错误: { MySentryClass(arg) // ... other code } 不用说,这会失败,因…
在结构体的 STL 映射中,为什么“[ ]”会出现在结构体中?运算符导致结构体的 dtor 被额外调用 2 次?
我创建了一个简单的测试用例,展示了我在正在处理的更大代码库中注意到的奇怪行为。该测试用例如下。我依靠 STL Map 的“[ ]”运算符来创建指向此类结…
链接方法和临时变量,请澄清
大家好! 我有一个类,它接收指向“圆”的指针(例如),然后通过一些“链接”方法调整其属性。像这样的事情: class CCircleSetter { public: explic…
sqlite:只读数据库中的临时表/视图?
看来 sqlite 不允许我在只读数据库中创建临时视图。我错过了什么吗?如果它是临时的,我认为数据库连接模式应该不重要。 我什至指定了“PRAGMA temp_s…
对临时异常的 const 引用
我们都知道这样的事情在c++中是有效的: const T &x = T() 而:则 T &x = T() 不是。 在最近的问题中,对话引出了这条规则。 OP 发布了一些代码…
为什么允许 T() = T()?
我相信表达式 T() 创建一个右值(根据标准)。但是,以下代码可以编译(至少在 gcc4.0 上): class T {} int main() { T() = T() } 我知道从技术上讲…
临时对象什么时候被销毁?
以下代码打印 one、two、 Three。所有 C++ 编译器都希望如此吗? #include <iostream> struct Foo { const char* m_name ~Foo() { std::cout <&…
C++表达式中临时对象的销毁
给出以下代码: #include <iostream> struct implicit_t { implicit_t(int x) : x_m(x) { std::cout << "ctor" << std::endl } ~implicit…
警告:返回对临时的引用
我有一个像这样的函数, const string &SomeClass::Foo(int Value) { if (Value < 0 or Value > 10) return "" else return SomeClass::Static…
将 const 引用绑定到临时对象时,为什么析构函数被调用两次?
阅读此内容后Herb Sutter 博客上的文章 中,我进行了一些实验,并遇到了一些让我困惑的事情。 我正在使用 Visual C++ 2005,但如果这是依赖于实现的,…
- 共 1 页
- 1