198得票6回答
一个const引用类成员会延长临时对象的生命周期吗?

为什么会这样呢? #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member...

78得票4回答
临时函数参数的生命周期是多久?

在将一个新的MyClass实例作为函数的参数时,像这样创建一个新的实例: class MyClass { MyClass(int a); }; myFunction(MyClass(42)); 标准是否对析构函数的时机做出任何保证? 具体来说,我能否假设它会在调用myFu...

77得票2回答
prvalues的Cv资格(重访)

这是对我的之前的问题的跟进,显然共识是cv限定符的变化只是一个相当小的、不重要的变化,旨在解决一些不一致性(例如返回prvalues并声明了带有cv限定符的返回类型的函数)。 然而,我看到标准中另一个似乎依赖于prvalues具有cv限定类型的地方:通过临时材料化转换用prvalues初始化...

72得票3回答
使用临时字符串的std::string::c_str()方法是否安全?

以下的C++代码是否格式良好? void consumer(char const* p) { std::printf("%s", p); } std::string random_string_generator(); consumer(random_string_generator...

71得票1回答
返回临时对象并绑定到常量引用

我的编译器对将临时变量赋值给常量引用没有任何抱怨: string foo() { return string("123"); }; int main() { const string& val = foo(); printf("%s\n", val.c_str()); ...

68得票4回答
为什么不能将临时对象绑定到非const引用?

C++允许将临时对象赋值给const引用,但不允许将临时对象赋值给引用。 例如: String& a = String("test"); // Error const String& a = String("test"); // Ok 无论我在哪里搜...

51得票1回答
左边的大括号在变量声明中的含义是什么,例如在 T {x} = y 中?

这个GitHub文件中的代码使用了一种我不熟悉的C++变量"声明"语法。 std::unique_ptr<CRecentFileList> {m_pRecentFileList} = std::make_unique<CRecentFileList>(... (m...

50得票4回答
为什么通过函数传递的临时对象,即使使用const引用也不能延长其生命周期?

在下面的简单示例中,为什么不能将 ref2 绑定到 min(x,y+1) 的结果? #include <cstdio> template< typename T > const T& min(const T& a, const T& b){ r...

47得票9回答
为什么这样做有效:从std::string函数返回C字符串字面值并调用c_str()函数。

我们最近在大学里听了一场讲座,教授告诉我们在不同编程语言中编程时需要注意的不同事项。以下是C++的一个例子:std::string myFunction() { return "it's me!!"; } int main(int argc, const char * argv[])...

42得票4回答
临时对象 - 何时创建,如何在代码中识别?

在Eckel的第一卷,第367页//: C08:ConstReturnValues.cpp // Constant return by value // Result cannot be used as an lvalue class X { int i; public: X(in...