当前位置: 首页 > 科技观察

EasyC++,This指针

时间:2023-03-12 00:01:32 科技观察

大家好,我是梁唐。这个指针仍然是股票类。假设我们要实现一种方法,将当前股票与进货股票进行比较,并返回价格较高的股票。我们在实现的时候,会遇到一个小问题。constStock&Stock::topVal(constStock&s)const{if(s.total_val>total_val){returns;}else{return????;}}这段代码有些问题,下面一一说。首先,让我们谈谈函数签名。眼前没有问题。问题出现在签名末尾的const中。这是我们第一次在函数的末尾看到const,而且这种用法只能用在类或结构的成员函数中,不能用在普通函数中。意思是这个函数不会修改任何成员变量的值,以const结尾的函数称为常量成员函数。常量函数有一些特殊的性质:可以被任何函数调用,只有常量函数可以被任何对象调用,但是const对象只能调用const函数性质不是很复杂,但有些像绕口令,需要派生自const常量的属性,换个角度理解。代码中的第二个问题是有一堆问号的地方。这里我们想返回当前对象,但是不知道怎么表达。为了解决这个问题,在C++中创建了一个叫做this的特殊指针,用来指向调用成员函数的对象,即当前对象。所以有了这个,这段代码可以写成:constStock&Stock::topVal(constStock&s)const{if(s.total_val>total_val){returns;}else{return*this}}此外,这个指针也可以用来访问current对象中的成员变量,比如我们要访问当前的total_val,可以写成this->total_val。我们直接使用total_val,本质上是一样的,编译器帮我们优化了。