已知下列程序的输出结果是42, 请将画线处缺失的部分补充完整。 #include<iostream> using namespace std; class Foo int value; public: Foo( ): value(0) {} void setValue(int value) { 【10】 =value; //给Foo的数据成员value赋值} void print( ) { cout<<value;} }; int main( ) { Foo f; f.setValue(42); f.print(); return 0;
参考答案:this->value或Foo::value
解析: 从注释中可以看出,下划线处应该填入Foo类的数据成员value。但是,由于函数的形参名也叫value,所以在函数中直接使用value引用的是形参变量而不是 Foo类的数据成员。此时,只有两个办法可以引用到Foo类的数据成员:一是通过this指针,在类的成员函数中this代表函数所属对象的指针,故可以填this->value。二是通过作用域运算符“::”明确指出访问的是Foo类的成员,故还可以填Foo::value。