我想重用一个全局字符串,并避免复制ctor。并且通常在某些函数中用作默认参数,我的代码如下所示。
我避免重载构造函数,因为c ++不支持构造函数中调用的构造函数。
我知道我是否使用" const char * aaa"而不是使用" const std :: string aaa", 它也会很好,但复制无法避免..
我使用变量而不是宏,因为它的多行格式难看且代码扩展原因
那么这里应该是一个完美的解决方案呢?
const std::string aaa = R"(a long code string [xxx] )";
class A {
public:
A(const std::string &&a = aaa) { std::cout<< a; }
};
A a;
A aa("bb");
然后我会得到错误
error: rvalue reference to type 'const basic_string<[3 * ...]>' cannot bind to lvalue of type 'const basic_string<[3 * ...]>'
A(const std::string &&a = aaa) { std::cout<< a; }