2201_75789358 2022-12-22 12:42 采纳率: 100%
浏览 8
已结题

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


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

  • 写回答

3条回答 默认 最新

  • ShowMeAI 2022-12-22 13:09
    关注

    望采纳

    原因是在函数 hanshu 中,你将参数 name1 赋值给了类的私有成员变量 name,但是并没有改变参数 name1 的值。因此,在函数内部使用的是参数的初始值,而不是赋值后的值。可以这样修改代码:

    void hanshu(string name1)
    {
        name = name1;  // 使用类的私有成员变量
        cout << name << endl;
    }
    

    注意,在 C++ 中,默认情况下函数的参数是值传递的,也就是说,函数内部对参数的修改不会影响到函数外部的变量。如果希望函数能够修改函数外部的变量,可以使用引用传递(使用取地址符 &)。例如:

    void hanshu(string &name1)  // 使用引用传递
    {
        name1 = name;  // 修改参数的值
        cout << name1 << endl;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月22日

悬赏问题

  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES