为什么在波纹管程序中发生了从字符串常量到'char*'的警告已弃用的转换
why the warining deprecated conversion from string constant to 'char*' occured in the bellow program
我创建了一个名为 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"
那样向其传递常量。
下定决心,编写一个或另一个代码。
相关文章:
- 获取隐式转换溢出从无符号到已签名的警告
- 奇怪的缩小转换在 g++ 编译器中加倍到浮点警告
- 隐式重新解释引用时强制转换,没有警告/错误
- 将无符号转换为复杂<int>原因符号转换警告
- 如何解决隐式转换丢失整数精度:'size_t'(又名"无符号长")到'int'警告?
- MSVC 中从 _Ty 警告到 int 警告的转换累积
- 为什么在 c++ 中索引字符串会发出隐式转换警告?
- 从 int 中剥离位时,编译器会警告一个转换,但不警告其他转换.有解决方法吗?
- C++:禁用隐式转换警告
- 为什么 gcc 警告只针对统一初始化缩小转换范围?
- 警告 C4267"参数":从"size_t"转换为"DWORD&quo
- 隐式转换:以下警告是否有效?
- 意外 (IMO) 常量转换警告
- C++:禁用 CMake 中的旧样式转换警告
- 键入从 DWORD 到 64 位指针的强制转换警告
- 警告 C4267"正在初始化":从'size_t'转换为"DWORD",可能会丢失数据
- isspace 函数的性能警告,从 int 转换为布尔值
- 隐式转换警告 int 到 int-looklike
- 编译器警告转换
- 将警告转换为错误