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

2023-10-20 16:30:20 浏览数 (1)

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

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

代码语言:javascript复制
CMyString s;
cout << s.c_str() << endl;

对应的实现如下图:

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

代码语言:javascript复制
CMyString s1(“china”);
cout << s1.c_str() << endl;

对应实现如下图:

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

代码语言:javascript复制
CMyString s3(s2);
cout << s3.c_str() << endl;
CMyString s4 = s3;
cout << s4.c_str() << endl;

对应实现如下图:

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

代码语言:javascript复制
// 赋值,=号运算符重载
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;

对应实现如下图:

0 人点赞