当前位置: 代码迷 >> 综合 >> C++ 类的 this 指针 语法练习4
  详细解决方案

C++ 类的 this 指针 语法练习4

热度:17   发布时间:2024-01-19 15:38:37.0
#include <iostream>
#include <string>
using namespace std;
// 定义一个类 Student
class Student
{
private:
string name;
int    age;
string address;
public:
// 存
void setname(string s){	name = s;}
void setage(int y){age = y;	}
void setaddress(string add){address = add;}    
// 取
string getname(){return name;}
int getage(){return age;}
string getaddress(){return address;}
// 返回 指向Student 对象的指针,因为this是指针,且是指向当下对象的指针
Student* Show()
{
cout<<"姓名: "<<name<<" --- 年龄: "<<age<<" ---- 住址: "<<address<<endl; 
return this;
}     
protected:
};
int main(void)
{
Student x;	   
x.setname("柳絮飘");
x.setage(22);
x.setaddress("学明路115号");	 
// 类的成员函数Show返回的是this指针, 
// x.Show()并没有用一个指针变量来接受它的返回值就直接用了.
// 有返回值的函数,调用时并不一定要搞个变量接受它的返回值.
x.Show()->Show()->Show()->Show(); // 
cout<<"对象x的地址 = "<<&x<<endl;
cout<<"--------------------------------------------------"<<endl;
// 搞个指针变量来接受吧.
Student * y =NULL;
y = x.Show();
cout<<"指针y的地址 = "<<y<<endl;
y->setname("张生民");
y->setage(23);
y->setaddress("琴海路136号");	 
y->Show()->Show()->Show();
cout<<"--------------------------------------------------"<<endl;
Student k;
k.setname("梅雨芯");
k.setage(24);
k.setaddress("爱国路398号");
cout<<"对象k的地址 = "<<&k<<endl;
y = k.Show();
cout<<"指针y的地址 = "<<y<<endl;
cout<<"--------------------------------------------------"<<endl;
cout<<"执行y->Show()结果:"<<endl;
y->Show();
cout<<"执行k.Show()结果"<<endl;
k.Show(); // 这个本来是有返回值的,不用接受也可.
// --------------------
return 0;
}


//---

 

定义第二个对象K后, 执行k.show返回的this给予 Y : 这是y的地址与k地址一样,说明this就是指向当前的对象k.

 

  相关解决方案