诗子黎 2021-03-05 07:21 采纳率: 50%
浏览 1368
已采纳

该程序为什么vs2010可以运行,而vs2019不可以?

各位好,我想问一下,这段程序,可以在vs2010上运行,但是不能在vs2019上运行,为什么?

#include <iostream>
using namespace std;
class String
{
public:
	String() { p = NULL; }
	String(char* str);
	void display();
private:
	char* p;
};
String::String(char* str)
{
	p = str;
}
void String::display()
{
	cout << p;
}
int main()
{
	String string1("Hello"), string2("Book");
	string1.display();
	cout << endl;
	string2.display();
	return 0;
}
  • 写回答

3条回答 默认 最新

  • upc_hxc 2021-03-06 03:26
    关注

    原因:这是VS2019默认执行了更严格的类型检查。你定义的String的构造函数形参是char* ,而string1("Hello")传入的是字面值,也就是const char*类型,const char*是不应该赋给char*的。所以VS2019阻止了这样的赋值操作。

    解决方案:1、在项目->属性->C/C++->语言中将“符合模式”改为“否”;

    2、将String的构造函数形参类型改为const char*。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 DNS服务器所在的国家不同与你的IP地址所在国家
  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
  • ¥15 结果有了,想问一下这个具体怎么输入
  • ¥15 怎么修改鸿蒙app的UI及功能设计
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部