this 是一个指针,指向调用成员函数时的对象,它是所有成员函数的隐式参数。因此,在成员函数中,可以通过 this 使用调用函数的对象。
示例程序:
[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
class cl {
int i;
public:
void load_i(int val) { this->i = val; } // 等效于 i = val
int get_i() { return this->i; } // 等效于 return i
};
int main()
{
cl o;
o.load_i(100);
cout << o.get_i();
return 0;
}
运行输出:注意:在友员函数里没有 this 指针,只有成员函数才会有 this 指针,因为友员函数不是类的成员。
示例代码2:
[C++] 纯文本查看 复制代码 // Ex7_10.cpp
// Using the pointer this
#include <iostream>
using std::cout;
using std::endl;
class CBox // Class definition at global scope
{
public:
// Constructor definition
explicit CBox(double lv = 1.0, double bv = 1.0, double hv = 1.0)
{
cout << endl << "Constructor called.";
m_Length = lv; // Set values of
m_Width = bv; // data members
m_Height = hv;
}
// Function to calculate the volume of a box
double Volume()
{
return m_Length*m_Width*m_Height;
}
// Function to compare two boxes which returns true
// if the first is greater than the second, and false otherwise
bool Compare(CBox& xBox)
{
return this->Volume() > xBox.Volume();
}
private:
double m_Length; // Length of a box in inches
double m_Width; // Width of a box in inches
double m_Height; // Height of a box in inches
};
int main()
{
CBox match(2.2, 1.1, 0.5); // Declare match box
CBox cigar(8.0, 5.0,1.0); // Declare cigar box
if(cigar.Compare(match))
cout << endl
<< "match is smaller than cigar";
else
cout << endl
<< "match is equal to or larger than cigar";
cout << endl;
return 0;
}
运行输出:$ ./this
Constructor called.
Constructor called.
match is smaller than cigar |