赋值构造函数,Effective C++学习笔记之“尽量使用初始化而不要在构造函数里赋值”

在对类成员变量初始化的时候,我们很多时候没有注意到,在类构造函数的初始化列表中初始化成员变量,和在构造函数中赋值初始化成员变量的差别是很大的,不仅表现在程序的执行效率上,同时还有语法上的区别。类定义如下:
1: class String
2: {
3: public:
4: String()
5: {
6: cout << "String::String()" << endl;
7: }
8: String(String& str)
9: {
10: m_value = str.m_value;
11: cout << "String::String(String& str)" << endl;
12: }
13: ~String(){}
14: String& operator=(String& src)
15: {
16: m_value = src.m_value;
17: cout << "String::operator =" << endl;
18: return *this;
19: }
20: protected:
21: int m_value;
22: };
23:
24: class Base
25: {
26: public:
27: Base(String& str);
28: Base(String& str, int flag);
29: ~Base(){}
30: protected:
31: String m_string;
32: const int m_flag;
33: };
34:
35: Base::Base(String& str)
36: {
37: m_string = str;
38: }
39:
40: Base::Base(String& str, int flag):m_string(str), m_flag(flag)
41: {
42: }
Tags:  函数指针赋值 赋值函数 赋值初始化 构造函数初始化 赋值构造函数

延伸阅读

最新评论

发表评论