首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++中析构函数以及this指针,该怎么处理

2012-03-11 
关于C++中析构函数以及this指针析构函数的作用是不是就是在对象生存期结束后,清理内存空间在下面这段代码

关于C++中析构函数以及this指针
析构函数的作用是不是就是在对象生存期结束后,清理内存空间
在下面这段代码中
Time::~Time()
{
            cout < < "The   destructor   be   called:   " < <hour < < ':’
      < <minute < < ': ' < <second < <endl;
}
似乎并没有这样的语句
是不是可以这样认为:程序中出现这样~开头的函数时   就认为他是析构函数,自动为其清理内存空间

另外对与this指针一直不知道如何使用   哪位大虾可否能清楚告知   3Q

[解决办法]
每个常规的方法调用都会传递调用该方法的对象的一个指针,将其作为“隐藏”的第一个参数,名this。可以使用这个指针来访问数据成员或调用方法,还可以将其传递给其他方法或函数。有时这个指针还有助于消除名字的歧义。例如,可能如下定义了SpreadsheetCell类,使得setValue()方法取一个名为mValue的参数(而不是inValue)。在这种情况下,setValue()可能如下所示:

void SpreadsheetCell::setValue(double mValue){

mValue = mValue;

mString = doubleToString(mValue);

}

第一行代码就很让人摸不着头脑。你指的是到底是哪一个mValue,是作为参数传递的mValue,还是作为对象成员的mValue?为了消除名字的这种歧义,可以使用this指针:

void SpreadsheetCell::setValue(double mValue){

this-> mValue = mValue;

mString = doubleToString(this-> mValue);

}

还可以使用this指针从对象的一个方法中调用一个取对象指针作为参数的函数或方法,例如,假设编写了一个独立的函数(而非类中的方法)printCell(),如下所示:

void printCell(SpreadsheetCell* inCellp){

cout

}

如果想从setValue()方法调用printCell(),必须将this作为参数传递,从而向printCell()提供一个SpreadsheetCell()对象(即调用setValue()的对象,setValue()就在此对象上操作)的指针:

void SpreadsheetCell::setValue(double mValue){

this-> mValue = mValue;

mString = doubleToString(this-> mValue);

printCell(this);

}

热点排行