C++如何正确地在类中初始化vector成员变量

本文解析了C++中正确的成员变量初始化方法,对比了错误的初始化方式,并提供了C++11及以前版本的正确实例,强调了初始化列表的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误的方法

class Foo(){
private:
	vector<string> name(5); //error in these 2 lines
	vector<int> val(5,0);
}

正确的方法

C++11以后:

class Foo(){
private:
    vector<string> name = vector<string>(5);
    vector<int> val{vector<int>(5,0)};
}

C++11以前:

class Foo {
private:
    vector<string> name;
    vector<int> val;
 public:
  Foo() : name(5), val(5,0) {}
};
C++中,初始化变量是一个基本操作,通常指在变量声明的同时赋予它一个初始值。C++提供了多种初始化变量的方式,以下是一些常见的方法: 1. 直接赋值初始化:在变量声明时使用等号(=)赋予一个初始值。 ```cpp int a = 10; ``` 2. 列表初始化C++11及以上):使用花括号({})进行初始化,这种方式可以避免窄化转换,并且可以初始化数组、容器等。 ```cpp int b{20}; std::vector<int> v{1, 2, 3, 4}; ``` 3. 使用构造函数进行初始化C++11及以上):对于型(对象),可以使用构造函数进行初始化。 ```cpp class MyClass { public: MyClass(int val) { /* ... */ } }; MyClass obj(30); // 使用构造函数初始化 ``` 4. 值初始化:对于内置型,如果在声明时仅用空括号(())或仅用等号加空括号,编译器会使用该型的标准初始值进行初始化。 ```cpp int c(); // 声明函数 int d {}; // 初始化为0 int e = {}; // 初始化为0 ``` 5. 拷贝初始化:允许编译器从一个已存在的相同型的对象拷贝值来初始化新变量。 ```cpp int f = 40; // 从已存在的值40拷贝初始化变量f ``` 6. 使用构造函数列表进行类成员初始化C++11及以上):这是初始化类成员变量的标准方式。 ```cpp class MyClass { private: int x; public: MyClass(int val) : x(val) {} // 使用构造函数列表初始化成员变量 }; ``` 正确地初始化变量是避免未定义行为和提高代码可读性的关键。根据变量的型和使用情况选择合适的初始化方法可以提高代码的安全性和效率。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值