为什么我调用这个函数没输出任何东西


#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;
}

img


因为这个name变量从头到尾没有被赋值,这里应该写错了