首页 > 编程 > C++ > 正文

C++之“this指针”

2019-11-06 07:20:36
字体:
来源:转载
供稿:网友

this指针有两个很重要的应用。

一,隐式和显式的使用this指针访问对象的数据成员

二,使用this指针使得串联的调用函数成为可能

应用一:

#include<iostream>using namespace std;class Test{public:	Test(int=10);//构造函数	void PRint();private:	int x;};void Test::print(){	cout << "        x:" << x;//隐式地调用this指针打印x;	cout << "/n  this->x:" << this->x;//显式地调用this指针打印x;	cout << "/n(*this).x:" << (*this).x << endl;//显式地调用this指针打印x;}Test::Test(int val)	:x(val){}int main(){	 Test t(12);	t.print();}

注意:当*this与圆点成员选择运算符一起使用时,括住*this的圆括号。这对括号是必须的,因为圆点运算符具有比*运算符更高的优先级啊。如果不使用的话,表达式*this.x将被认为与*(this.x)是一样的,进行求值会导致逻辑错误。

应用二:使用this指针使得串联的调用函数成为可能

#include<iostream>#include<string>#include<iomanip>#include<ctime>#include<cstdlib>using namespace std;class Time{public:	Time(int = 0, int = 0, int = 0);//构造函数	Time &setTime(int, int, int);//获取时间,注意类型为该类型的引用	Time &setHour(int);//设置小时,注意类型为该类型的引用	Time &setMinute(int);//设置分钟,注意类型为该类型的引用	Time &setSecond(int);//设置秒,注意类型为该类型的引用	int getHour();//获取小时	int getMinute();//获取分钟	int getSecond();//获取秒	void print();//输出时间private:	int hour;	int minute;	int second;};Time::Time(int h, int m, int s){	setTime(h, m, s);}Time &Time::setTime(int h, int m, int s){	setHour(h);	setMinute(m);	setSecond(s);	return *this;//必须返回this指针}Time &Time::setHour(int h){	hour = (h > 0 && h < 24) ? h : 0;	return *this;//必须返回this指针}Time &Time::setMinute(int m){	minute = (m > 0 && m < 60) ? m : 0;	return *this;//必须返回this指针}Time &Time::setSecond(int s){	second = (s > 0 && s < 60) ? s : 0;	return *this;}int Time::getHour(){	return hour;}int Time::getMinute(){	return minute;}int Time::getSecond(){	return second;}void Time::print(){	cout << setfill('0') << setw(2) << hour << ":"<<		setfill('0') << setw(2) << minute <<":"<<		setfill('0') << setw(2) << second << endl;}int main(){	Time t(12,23,65);	t.print();	t.setHour(20).setMinute(34).setSecond(35);//串联的函数调用	t.print();}注意:程序中的setTime,setHour,setMinute,setSconde设置为Time类的引用,在实现是必须返回*this。


上一篇:C++学习笔记

下一篇:C++中的继承

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选