问题 填空题

己知下列程序的输出结果是42,请将横线处缺失的部分补充完整。 #include<iostream> using namespace std; class Foo{int value; public:Foo():value(0){}void setValue(int value){______=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引用的是形参变量而不是Foo类的数据成员。解决办法有两种:一是通过this指针,在类的成员函数中this代表函数所属对象的指针,即可填this->value;二是通过作用域运算符“::”明确指出访问的是Foo类的成员,所以还可填入Foo::value。

单项选择题
单项选择题