4-6 C++ this指针
例子:
如果参数与数据成员同名会怎么样呢?
解决方法:this指针(指向数据自身的指针,自身的引用)
成员函数如何访问到对应的数据成员?
上图:系统为每个成员函数都加了this指针(编译器自动加了this指针),用户不用写;
4-7 C++ this指针实践
Array.h
class Array
{
public:
Array(int len);
~Array();
Array* setLen(int len);
int getLen();
Array& printInfo();
private:
int len;
};
Array.cpp
#include "Array.h"
#include<iostream>
using namespace std;
Array::Array(int len)
{
this->len = len;
}
Array::~Array()
{
}
Array* Array::setLen(int len)
{
this->len = len;
return this;
}
int Array::getLen()
{
return len;
}
Array& Array::printInfo()//函数返回类型是Array类型的实例
{
cout<<"len="<<len<<endl;
cout<<this<<endl;
return *this;//this是一个指针,*this是一个对象,这个对象是一个临时的对象(是一个拷贝构造的函数),不是此时的Array;如果是引用的话,就是了(?)
}
demo.cpp
#include<iostream>
#include<stdlib.h>
#include "Array.h"
using namespace std;
int main(void)
{
Array arr1(10);
arr1.printInfo().setLen(5)->printInfo();
cout<<&arr1<<endl;
system("pause");
return 0;
}
运行结果:
len=10
00C2FCBC
len=5
00C2FCBC
00C2FCBC
请按任意键继续. . .