问题标签 [temporaries]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 C++ 中链接对临时对象的调用
我有一个对字符串进行转换的类,就像这样
所以我可以创建一个子类
然后我可以使用转换:
有没有更好的设计呢?如果可以的话,我想避免使用动态分配/shared_ptr,但我不确定临时人员是否会在整个通话过程中保持活力。我还希望能够让每个人transer
都能够在销毁期间与其父级对话,因此临时人员也需要以正确的顺序销毁。创建链式转换并将其保存以备后用也很困难,因为
将保存指向不再存在的临时对象的指针。做类似的事情
会很安全,但很烦人。有没有更好的方法来执行这些类型的链式操作?
c++ - 防止临时延长其使用寿命?
这可能是不可能的,但我想知道是否有可能让一个暂时的东西永远不会超过它原来的表达方式。我有一个指向父对象的对象链,以及一个将创建子对象的成员函数,一个简化的例子是here
我想使用的方式person
是将它传递给一个函数,如下所示:
没问题。
只要没有一个临时对象存活超过原始表达式,这将正常工作,但是如果我将最终临时对象之一绑定到 const 引用,它的父母将无法存活,并且我得到一个段错误。我可以隐藏person
的复制构造函数和赋值运算符,但是有什么办法可以防止这种错误的发生吗?如果可能的话,我想避免动态分配。
c++ - 临时人员的行为不像 const
在如下所示的表达式中,我不清楚临时假设是否为 const 类型。
X(3)
表现得像非常量(因为我可以调用operator+
,而X(4)
表现得像 const(因为它需要 const 参数operator+
)。
有人可以澄清一下,正确的理解是什么?
c++ - 临时对象可以绑定到非常量引用吗?
我编写了以下代码来测试它:
两个函数退出后都会调用临时对象的析构函数,但我认为您只能将临时对象绑定到const
引用。那为什么会goo
起作用?
是 UB 和 MSVS 错了,还是没问题?
python - Python中列表理解中表达式的参考值?
如果我有一个列表理解,比如
有没有办法在这里mymap.get(x,None)
只做一次?
我想像
但目前这是SyntaxError
py 2.x中的一个。我希望能够引用列表理解的“表达式”或它的“list_if”部分的结果值。
我也试过
但那是一个NameError
,我想_
这只是在线上的一些解释器功能。
编辑
有没有办法以某种方式引用这个临时/匿名/未命名变量,而无需重新迭代列表?
c++ - 从 Eigen::CwiseBinaryOp 转换为 MatrixXd 会导致段错误
我正在编写一个将 Eigen 表达式模板存储为成员变量的库,以执行它需要执行的复杂计算。但是,似乎我无法存储或返回这些表达式模板,除非它们直接在 MatrixXd 或类似中转换。这迫使每一步都被保存为暂时的,并且破坏了整个设计的效率。
这是一个导致麻烦的简短示例。Holder 只持有一个 Eigen 矩阵,Summer 需要两个持有者,并在调用 get() 时输出它们持有的两个矩阵的总和。当 sum 表达式模板被评估为矩阵时,随后的测试失败(segfault 或 std::bad_alloc)。
包含文件
简单测试
- 在包含文件中,如果您改用注释掉的 typedef,它可以正常工作。
- 我怀疑这个问题是由于一个悬空的参考,但无法证明这一点。
c++ - 如何通过solve()跟踪Eigen对象?
这个问题与从 Eigen::CwiseBinaryOp 到 MatrixXd 的转换导致 segfault相关。它可能有与前者一样简单的解决方案。
在这个最小的例子中,我定义Holder
了 ,它包含一个 Eigen 矩阵,并通过它的get()
成员函数返回它。类似地,Decomp
是该矩阵的 LDLT 分解的表达式模板,Solve
求解 AX=B,得到 X。
以下测试失败X.get()
但如果您使用头文件中注释掉的行,一切正常。不幸的是,这将分解的评估转移到求解器的构造上,这不适合我的使用。通常,我想构建一个expr
涉及 this的复杂表达式Solve
,然后再调用expr.get()
。
我怎么解决这个问题?是否有要遵循的一般规则,以避免进一步的相关问题?
c++ - 复制构造函数、析构函数和临时对象
我编写了这个类来测试默认构造函数、复制构造函数、赋值运算符和析构函数的行为:
我在不同的上下文中使用这个类来深入理解每个函数的调用方式和时间:我希望评论中的行为:
但相反,我得到以下输出:
一切都很好,直到第一个-----------------它似乎跳过了对象的创建(我想到了初始化 t2 的临时 uset,因为它不会立即被销毁那条线),所以计数减一..
c++ - How does the compiler determine the needed stack size for a function with compiler generated temporaries?
Consider following code:
In the line where getFoo() is called the compiler will generate a temporary object of cFoo, to be able to call doSomething1(). Does the compiler reuse the stack memory which is used for these temporary objects? How many stack memory will the call of "some_function_in_the_callstack_hierarchy" reservate? Does it reservate memory for every generated temporary?
My guess was that the compiler only reserve memory for one object of cFoo and will reuse the memory for different calls, but if I add
I can see that the needed stack size for "some_function_in_the_callstack_hierarchy" is way more and its not only because of the additional local int variable.
On the other hand if i then replace
with a reference (Only for testing purpose, because returning a reference to a private member is not good)
it needs way less stack memory, than the size of one cFoo.
So for me it seems that the compiler reserves extra stack memory for every generated temporary object in the function. But this would be very inefficient. Can someone explain this?
c++ - 引用c++临时字符串的内容
以下代码正在工作,我试图了解如何。
据我了解infile.string()
,创建一个临时文件指向内容。在语句结束 (;) 的那一刻,临时字符串应该超出范围,导致文件成为悬空指针。
我将使用字符串而不是,char*
但仍然需要了解我缺少什么。
编译器 - gcc 4.8.4
优化 - O3