#include
using namespace std;
class person
{
public:
void hanshu(string name1)
{
name1=name;
cout << name<< endl;
}
private :
string name;
int age;
};
int main(){
person p;
p.hanshu("李四");
return 0;
}
望采纳
原因是在函数 hanshu 中,你将参数 name1 赋值给了类的私有成员变量 name,但是并没有改变参数 name1 的值。因此,在函数内部使用的是参数的初始值,而不是赋值后的值。可以这样修改代码:
void hanshu(string name1)
{
name = name1; // 使用类的私有成员变量
cout << name << endl;
}
注意,在 C++ 中,默认情况下函数的参数是值传递的,也就是说,函数内部对参数的修改不会影响到函数外部的变量。如果希望函数能够修改函数外部的变量,可以使用引用传递(使用取地址符 &)。例如:
void hanshu(string &name1) // 使用引用传递
{
name1 = name; // 修改参数的值
cout << name1 << endl;
}