问题
单项选择题
有以下程序:
#include <iostream>
using namespace std;
class sample
private:
int n;
public:
sample()
sample (int m)
n=m;
sample add(sample s1,sample s2)
this->n=s1.n+s2.n;
return (*this);
void disp()
cout<<"n="<<n<<end1;
;
int main ()
sample s1(10) ,s2(5),s3;
s3.add(s1,s2);
s3.disp();
return 0;
程序运行后,输出的结果是( )。
A.n=10
B.n=5
C.n=20
D.n=15
答案
参考答案:D
解析: 本题考核this指针的应用。本程序中,sample类的add成员函数中使用了this指针,this指针指向当前对象自身,该成员函数中的语句“this->n=s1.n+s2.n;”用于修改当前对象的数据成员n的值,语句“return(*this);”用于返回当前对象自身,即对当前对象进行了修改。
对于主函数调用add()成员函数语句“s3.add(s1,s2);”。此时,this指针指向的是对象 s3,执行该语句前,s3的数据成员n未赋值,执行完该语句后,就修改了s3的私有成员n的值,使其为15。