C++之“this指针”
来源:互联网 发布:2008年网络流行歌曲 编辑:程序博客网 时间:2024/06/05 17:11
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指针使得串联的调用函数成为可能
#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。
1 0
- 【C++】:C++之this指针的作用
- 【C/C++】this指针
- C++this指针、智能指针
- 【C++】this 指针
- C++this指针
- C++this指针
- C++this指针
- C++this指针
- C++this指针
- c++this指针
- C++this指针
- C++this指针
- C++this指针(二)
- C++-this指针
- c++this指针
- C++this指针
- C ++的this指针
- C++this指针详解
- BIT2013年上机第二题
- android五大基本存储方式
- BZOJ 2330: [SCOI2011]糖果
- POJ 3764 The xor-longest Path (Trie树 + dfs)
- 客户端的跳转与服务器端的跳转的区别
- C++之“this指针”
- HDU 2070 JAVA
- caffe学习笔记3-matcaffe接口学习
- sdutacm-大家快来A水题
- Android逆向笔记之AndroidKiller与Android Studio的使用
- POJ 2342 树形dp
- HDU 2071 JAVA
- Java中常用的类型转换汇总
- 实例:sizeof一个指针或者一个数组