对象的向量 - 如何将参数发送到构造函数
vector of objects - how to send a parameter to the constructor?
假设我有以下代码:
struct obj{
int v;
obj(int i = 1){
v = i;
}
};
int main(){
vector<obj> v1(10); // (1)
vector<obj> v2(15); // (2)
}
根据以上:
数字 (1( 创建一个具有 10 个默认 v=1
的 obj
实例的向量。
数字 (2( 如何将 15 作为参数发送到obj
以便v=15
???
我在网上搜索并在这个网站上找到了这篇文章,但它似乎是更高级的东西,作为一个新手我没有得到它。
vector<obj> v1(10); // creates a vector of 10 obj, each initialized
// with the default value 1
vector<obj> v2(10, 15); // creates a vector of 10 obj, each initialized
// with the value 15
如果要将多个参数传递给构造函数:
vector<obj> v3(10, obj(15, x, y)); // creates a vector of 10 obj, each
// initialized with (15, x, y)
当然,您必须提供一个构造函数,该构造函数需要三个参数才能正常工作。
你可以这样做:
vector<obj> v3 (10,15);
10 是对象数。
15 是构造函数的参数。
对于多个参数,您可以按列表形式发送多个值,如下所示:
vector<obj> v3 (10, {15,25} );
{15,25}
.这称为初始值设定项列表。
另一种选择是:
vector<obj> v3(10, obj(15,25));
参见鲍姆的笔记。这是一个很好的参考。
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?