继定义抽象数据类型(1)?接着对类的内容进行介绍;
1、this指针????????
this指针在类中具有很广泛的用处,当定义一个类后并调用该类非静态成员时就会用到this指针,下面用形象一点的解释来说明this的应用;
????????将类比作一个房子,××房子就是在房子这个类下的定义,里用很多物品,你想说这个房子里的电视机,××房子的电视机,在c++中就是访问了这个类下的成员,××房子->电视机,而编译器中会有一个指向自己的指针,你已经进到了这个房子,你就不用再说这是××房子的电视机,而可以直接就介绍这个电视机,this->电视机就意味着这个房子里的电视机。
?this指针使用:
????????1)this 指针指向被调用的成员函数所属的对象; ????????2)this 指针隐含每一个非静态成员函数内的一种指针; ? ? ? ? 3)this 指针不需要定义,直接使用即可;
this 指针的用途 ? ? ? ? 1)当形参和成员变量同名时,可用this指针来区分; ? ? ? ? 2)在类的非静态成员函数中返回对象本身,可使用return * this; ? ? ? ? 3)返回的是指针的时候 ,函数返回的是引用时返回的是左值; ? ? ? ? 4)若返回的是值会在拷贝函数中创造新的对象;
#include<iostream>
#include<string>
using namespace std;
class house
{
public:
house(string TV,int age)
{
this->TV = TV;
this->age = age; //解决名称冲突,不用定义直接使用;
}
house& AgeAdd(house& h)
{
this->age += h.age;
return *this;
}
string TV;
int age;
};
int main()
{
house h("Sony", 20);
//打印
cout << "电视型号 : " << h.TV << ",使用时长 : " << h.age << endl;
h.AgeAdd(h).AgeAdd(h); //返回的是this的指针,
// 说的是返回值是this所指的类,还可以继续访问,链式访问
cout << "使用时长 : " << h.age << endl;
system("pause");
return 0;
}
?
?下面用类简单设计一个程序
? ? ? ? 程序的目的是用类来设计一个长方体,平且给出两个长方体判断是否相等。
#include<iostream>
#include<string>
using namespace std;
class Cube
{
public:
//设置长宽高
void set(int l, int w, int h)
{
this->m_L = l;
this->m_W = 2;
this->m_H = h;
}
//获取长宽高
int getL()
{
return m_L;
}
int getW()
{
return m_W;
}
int getH()
{
return m_H;
}
//求取长方体的面积
int CalculateS()
{
return 2 * m_L * m_W + 2 * m_L * m_H + 2 * m_W * m_H;
}
//求取长方体体积
int CalculateV()
{
return m_L * m_W * m_H;
}
//判断两个长方体是否相等
bool isSame(Cube& c)
{
if (m_L == c.getL() && m_H == c.getH()&& m_W == c.getW())
{
return true;
}
return false;
}
private:
int m_L;
int m_W;
int m_H;
};
int main()
{
Cube c1;
Cube c2;
c1.set(5, 6, 8);
c2.set(6, 8, 9);
cout << "长方体1的体积 : " << c1.CalculateV() << " 长方体1的表面积 : " << c1.CalculateS() << endl;
cout << "长方体2的体积 : " << c2.CalculateV() << " 长方体2的表面积 : " << c2.CalculateS() << endl;
if (c2.isSame(c1))//判断是否相等
{
cout << "两长方体相等!" << endl;
}
else
{
cout << "两长方体不想等!" << endl;
}
system("pause");
return 0;
}
?
|