c++ - 将新对象作为默认参数传递给构造函数

标签 c++ constructor arguments default-value

我有一个如下所示的构造函数:

RandomClass(const int16_t var1, const SecondClass& var2);

我需要将默认参数传递给第二个参数,所以目前我做了这样的事情:

RandomClass(const int16_t var1, const SecondClass& var2 = *(new SecondClass(*(new std::unordered_map<int16_t, double>())));

这真是太尴尬了。请注意,我不想使用重载的构造函数,或将第二个参数从引用更改为指针。

传递默认参数的优雅方式是什么?

最佳答案

您可以将 const 引用绑定(bind)到临时对象:

RandomClass(const int16_t var1, const SecondClass& var2 = SecondClass(std::unordered_map<int16_t, double>()));

当然,这假设您将 var2 复制到成员中,或者在构造函数退出后不使用它。如果情况并非如此,那么您的设计就有问题。也许使用原始指针或 shared/weak_ptr 更合适。

关于c++ - 将新对象作为默认参数传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571899/

相关文章:

c# - 将复杂的结构(带有内部结构数组)从 C# 传递到 C++

c# - 如何在两个动态生成的组合框上使用不同的值

java - 使用 super() 时,构造函数调用必须是构造函数中的第一条语句;

javascript - 函数参数作为字符串但作为函数执行?

c++ 这个参数在命令行中是什么意思? | grep MATCH >zout匹配

javascript - 作为参数传递时,对象变成数字

c++ - Mac OS X 拒绝创建我的 OpenGL 窗口

c# - C# 中的 C++ union

java - 使用 values( ) 创建枚举常量的最终 Java 类数组

Java 构造函数调用被忽略/没有抛出错误