这里的所有构造函数方法都做同样的事情.我主要使用method2但今天第一次看到method3.在某些地方看过method1但不知道它们之间的确切差异是什么?哪一个是定义构造函数的最佳方法,为什么?是否涉及任何性能问题?
1 class Test
2 {
3 private:
4 int a;
5 char *b;
6 public:
7 Test(){};
8
9 // method 1
10 Test(int &vara, char *& varb) : a(vara), b(varb){}
11
12 // method 2
13 Test(int &vara, char *& varb)
14 {
15 a = vara;
16 b = varb;
17 }
18
19 //method 3
20 Test(int &vara, char *& varb)
21 {
22 this->a = vara;
23 this->b = varb;
24 }
25
26 ~Test(){}
27 };
Run Code Online (Sandbox Code Playgroud)
我在这里使用了简单的字段int和char*,如果我有很多字段或像struct这样的复杂类型会发生什么?
谢谢
小智 14
对于您使用的类型,性能可能没有差异.但是对于非POD数据(带有构造函数的类),形式如下:
Test(int &vara, char *& varb) : a(vara), b(varb){}
Run Code Online (Sandbox Code Playgroud)
将是最有效的.这是因为无论您是否提供初始化列表,都将初始化非POD数据.使用赋值的其他形式将使用命中初始化,然后另一个命中用于赋值.
| 归档时间: |
|
| 查看次数: |
3996 次 |
| 最近记录: |