为什么在波纹管程序中发生了从字符串常量到'char*'的警告已弃用的转换

why the warining deprecated conversion from string constant to 'char*' occured in the bellow program

本文关键字:警告 转换 char 波纹管 字符串 发生了 常量 程序 为什么      更新时间:2023-10-16

我创建了一个名为 person 的类,该类具有公共成员函数 fill_data,该函数将两个参数作为 char 数组和 int 。我通过了这样的论点fill_data("tushar",30(;但显示警告 已弃用从字符串常量到"char*"的转换但我不明白为什么,如果有的话,我知道|

#include<iostream>
#include<cstring>
using namespace std;
class person
{
    char name[20];
    int age;
    public:
    void fill_data(char name2[],int age2)
    {
        strcpy(name,name2);
        age=age2;
    }
    void display_data(void)
    {
        cout<<name<<endl;
        cout<<age<<endl;
    }
};
int main()
{
    person p1;
    p1.fill_data("tushar",30);
    p1.display_data();
    return 0;
}

您将字符串常量"tushar"传递给函数参数 char name2[] ,这是非常量。因此,为了做到这一点,编译器必须将字符串常量转换为char *(而不是const char *(,这是不推荐使用的。

如果fill_data不打算修改name2,则参数应const。如果fill_data要修改作为name2参数传递的任何内容,请不要像"tushar"那样向其传递常量。

下定决心,编写一个或另一个代码。