项目场景

创建学生类,在通过构造函数创建对象后,编译器(vs2019)报错

#include <iostream>
using namespace std;
class S {
private:
int m_id;
char* m_name;
public:
S(int id, char* name);
void show(void);
};
S::S(int id=1, char* name) {
m_id = id;
m_name = name;
}
void S::show(void){
cout << m_name << m_id << endl;
}
int main(void) {
S s(2, "abab");
s.show();
return 0;
}

问题描述

这个错误会在vs2019中报错,但是在Dev C++中不会报错。
img

原因分析

vs2019对语法的要求更加严格了,在通过引用传递数组的时候必须添加const关键字。
const char*类型不能赋值给char*类型

解决方案

  1. char *添加const
  2. 在使用const char *类型的变量前加(char *),进行强制类型装换