C++Primer Plus 第十章-this指针

C++Primer Plus 第十章-this指针

程序如下:

//stock20.h 头文件

#ifndef STOCK20_H_

#define STOCK20_H_

#include<string>

class Stock

{

private:

std::string company;

int shares;

double shares_val;

double total_val;

void set_tot(){total_val = shares *share_val;}  //内联函数

public:

Stock();//默认构造函数

Stock(const std::string &co, long n=0,double pr=0.0);//构造函数

~Stock();//析构函数

const Stock & topval(const Stock & s) const;

};

#endif


//stock20.cpp //源程序

#include <iostream>

#include"stock20.h"

Stock::Stock()//默认构造函数

{

company = "no name";

shares=0;

share_val=0.0;

total_val=0.0;

}

Stock::Stock(const std::string &co,long n,double pr)//构造函数

{

company=co;

if(n<0)...

shares=n;

share_val=pr;

set_tot();

}

Stock::~Stock()//析构函数

{

}

const Stock & Stock::topval(const Stock &s) const

{

if(s.total_val>total_val)

return s;

else

return *this;// this指针

}


1)const Stock & Stock::topval(const Stock &s) const 该函数隐式地访问一个对象,而显式地访问另一个对象,并返回其中一个对象的引用。括号中的const表明,该函数不会修改被显式地访问的对象;而括号的const表明,该函数不会修改被隐式地访问的对象。由于该函数返回了两个const对象之一的引用,因此返回类型也应为const引用。


2) this指针指向用来调用成员函数的对象(this被作为隐藏参数传递给方法)。这样,函数调用stock1.topval(stock2)将this指针设置为stock1对象的地址,使得这个指针可用于topval()方法。同样,函数调用stock2.topval(stock1)将this设置为stock2对象的地址。一般来说,所有的类方法都将this指针设置为调用它的对象的地址。


3)每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。然而,要返回的不是this,this是对象的地址,而是对象本身,即是*this(将解除引用运算符*用于指针,将得到指针指向的值)。


4)对象数组:可以用构造函数来初始化数组元素。必须为每个元素调用构造函数。


5)类作用域:在类中定义的名称(如类数据成员名称和类成员函数名)的作用域都为整个类,作用域为整个类的名称只在该类中是已知的,在类外是不可知的。因此,可以在不同类中使用相同的类成员名而不会引起冲突。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值