实例化对象不同方式对应的实现

在实例化一个对象过程中,我们看见过很多种方法,比如string类中,可以使用string s1 = “good”,也可以使用 string s2(“good”) 等等,方法有很多,本文就罗列了一下几种实例化对象的方法,以及在类内部实现的过程。

第一种:实例化一个对象,只有名字,没有参数。(构造器)

CMyString s;
cout << s.c_str() << endl;

对应的实现如下图:

2015-05-10_223054

第二种:实例化一个对象,带有括号,括号内带参数(构造器)

CMyString s1("china");
cout << s1.c_str() << endl;

对应实现如下图:

2015-05-10_223423

第三种:使用之前实例化出来的对象初始化(拷贝构造)

CMyString s3(s2);
cout << s3.c_str() << endl;

CMyString s4 = s3;
cout << s4.c_str() << endl;

对应实现如下图:

2015-05-10_223434

第四种:使用赋值运算符实例化一个对象(赋值运算符重载)

// 赋值,=号运算符重载
CMyString s5;
// 等同于 s5.operator= (s4);
s5 = s4;
// 同上 相当于s5.operator=(s4.operator=(s3));
s5 = s4 = s3;
cout << s5.c_str() << endl;

CMyString s6("china");
s6 = s6;
cout << s6.c_str() << endl;

对应实现如下图:

2015-05-10_223743

发表评论