8得票3回答
为什么调用复制构造函数而不是移动构造函数?

请看下面的示例代码: #include <iostream> struct Foo { Foo() { std::cout << "Default!\n"; } Foo(const Foo& foo) { std...

8得票2回答
编译器是否会优化返回带有固定大小数组的结构体函数?

假设我有一个在C/C++中的结构体,其中包含固定大小的数组成员,例如: #define SIZE 10000 struct foo{ int vector_i[SIZE]; float vector_f[SIZE]; }; 我希望创建一个函数,能够返回一个foo实例,例如: f...

8得票4回答
今日免费次数已满, 请开通会员/明日再来

请看以下代码: struct foo { foo() { std::cout << "Constructing!" << std::endl; } foo(const foo& f) { ...

8得票4回答
复制构造函数 vs 返回值优化

在之前的问题中,似乎一个普通的按值返回函数总是将其return参数复制到被分配的变量中。 这是否符合标准要求,或者该函数能否通过在函数体内构造“被分配到”的变量来进行优化? struct C { int i; double d; }; C f( int i, int d ) { ...

7得票1回答
从std::tuple解包的返回值优化

是否有编译器能够对通过std::tuple从函数返回的多个值执行返回值优化?为了清楚起见,在下面的代码中,是否有任何编译器能够避免不必要的复制? std::vector<int> a; std::list<float> b; std::tie(a,b) = myFun...

7得票7回答
引用还是返回 - 最佳实践

例如,我们有一个编码函数。最佳实践是如何使用: void Crypto::encoding(string &input, string &output) { //encoding string output = encoded_string; } 或者 ...

7得票3回答
如何返回一个fstream(C++0x)

我想直接开始编码: #include <iostream> #include <fstream> #include <string> class test : public std::ofstream { public: test...

7得票3回答
返回值优化(RVO)不是一个bug吗?

我也许在问一个愚蠢的问题,但是我看了一下RVO的维基百科页面(在这里),并且无法停止想知道那种行为是否错误。我在我的机器上尝试了一下,即使优化级别很高,RVO也完全启动了。如果构造函数中实际上发生了一些重要的事情会怎么样呢?我知道不应该这样,但如果真的发生了呢?我不明白为什么在构造函数中存在副...

7得票1回答
在C++中,返回一个大括号包含的初始化器可能会导致复制吗?

例子: struct s { int a; }; s func() { return {42}; } int main() { s new_obj = func(); // line 6 (void) new_obj; return 0; } 这个有效。现在,...