C++学习第三十一天----将引用用于类和继承

1. 将引用用于类对象

​​​​​​程序清单8.7;将引用用于类对象; · 166a40f · Kite/C和C++ - Gitee.com

        上述代码使用了三个函数来进行修改一个字符串,通过分析它们不同的运行机制和结果来加深对引用用于类对象的使用方法。

        对于version1(),只简单的返回temp可不行,因为函数结束后,它将不复存在,因此该函数的返回类型是string。那么为什么函数返回string就可以了呢?这意味着temp的内容将被复制到一个临时存储单元中,然后在调用的时候从临时存储单元中再复制。

        这里我只看书没搞明白。我的理解是不是c++中,string类有一个特殊的机制,就如同上述所说的,会把这个临时变量给复制到一个别的地方进行保存。

version1(input,"***")

string version1(const string & s1, const string & s2);

        看一下调用和函数原型,调用传的两个实参,input是string与形参s1是相同类型的,引用指向是没问题的;***是const char*,与string 不同,类型不匹配创建临时变量。这就要说到前面提到的临时变量了,所创建的这个临时变量是可以被引用的。

C++学习第二十九天----引用变量和c语言之register关键字_The Kite的博客-CSDN博客

        对于version2(),第一个参数没有使用const,代表可以修改,这个函数也正是使用了这一特点,直接修改了传进来的第一个参数,但是这也是一个副作用,原先的数据被修改了。

        对于version3(),这就有一个致命的缺陷了,返回了一个局部变量的引用,引用已经释放掉的内存,这是不允许的。

2.对象、继承和引用

        使得能够将特性从一个类传递给另一个类的语言特性被称为继承。例如ostream和ofstream,

C++学习第二十天----简单文件输入/输出-CSDN博客

        ostream是基类,ofstream是派生类;派生类继承了基类的方法,意味着ofstream对象可以使用基类的特性,例如格式化方法precision()和setf();

        继承的另一个特性,基类引用可以指向派生类对象,而无需进行强制类型转换。

        

你可能感兴趣的:(学习)