- 💌 所属专栏:【程序错误解决方法(建议收藏)】
- 😀 作 者: 我是夜阑的狗🐶
- 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
- 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩
有一些C++程序在VS2017上运行会有一些错误,而在vc6.0中却能运行出来。接下来的一个程序就是我在vs2017上运行出现错误,而在vc6.0上运行出来。但我已经通过分析vs2017上错误来源解决了该问题,并以此作为分享。
实例码:
#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; //使p指向实参字符串
}
void String::display()
{
cout << p;
}
int main()
{
String string1("Helle");
String string2("Book");
string1.display();
cout << endl;
string2.display();
cout << endl;
return 0;
}
在vs2017运行会显示
从vs2017显示的错误中看出,把形参改为常指针的话,就可以与实参相匹配了,所以可以把源程序改如下:
#include<iostream>
#include<string>
using namespace std;
class String
{
public:
String() { p = NULL; } //定义默认构造函数
String(const char *str); //声明构造函数,把形参定义成常指针
void display();
private:
const char *p; //定义成常对象成员,用于指向字符串
};
String::String(const char *str) //定义构造函数
{
p = str; //使p指向实参字符串
}
void String::display()
{
cout << p;
}
int main()
{
String string1("Helle");
String string2("Book");
string1.display();
cout << endl;
string2.display();
cout << endl;
return 0;
}
这样就能在vs2017成功运行出来了