题目描述:
描述
填空,按要求输出
#include <iostream>
using namespace std;
struct A
{
int v;
A(int vv):v(vv) { }
// 在此处补充你的代码
};
int main()
{
const A a(10);
const A * p = a.getPointer();
cout << p->v << endl;
return 0;
}
输入
无
输出
10
样例输入
无
样例输出
10
分析:
目标是通过getPointer()这个函数将 a 这个 A 类型的变量给 p,再输出10就OK了。
首先判断 p 的类型是const A*,而 a 是const A类型,所以getPointer()的返回值必须是const A*,其次,由于 a 是const,所以在getPointer()内不能修改 a 的内容,所以getPointer()后必须加const修饰,即是 const A* getPointer() const。
答案:
const A* getPointer()const{
return this;
}
拓展,通过getPointer()赋予 p 关于 a 的内容是通过隐式转换拷贝构造的方法。(博主自己觉得…)
后面加了输出 a 和 p 的地址,发现 a 、p地址不一样,占用空间大小一样。