下面这个C++程序哪里错了。。求大神指点

2025-05-07 18:52:42
推荐回答(2个)
回答1:

using namespace std;
class File{
    string path;
public:
    File(){}
    File(const string& path):path(path){  // 不能够有默认值,这样就和第一个会存在重复的情况
        cout<<"创建文件"<    }
};

int main()
{
    File *p1=new File();
    File *p2=new File("/etc/passwd");
    File *p3=new File[3];
    delete [] p3;p3=NULL;
    delete p1;p1=NULL;
    delete p2;p2=NULL;
}

回答2:

第一处是包含的头文件有问题

#include //对应于C语言中的#include
#inlcude //用string就必须包含这个头文件

第二个是构造函数的问题,两个构造函数要么把第一个去掉,要么把第二个的缺省参数去掉,要不然会造成二义性。

#include
//#include
#include
using namespace std;
class File {
 string path;
public:
 //File() {}
 File(const string& path = "无名"):path(path) {cout << "创建文件: " << path << endl;}
};
int main()
{
 File *p1 = new File;
 File *p2 = new File("/etc/passwd");
 File *p3 = new File[3];
 delete []p3; p3 = NULL;
 delete p2; p2 = NULL;
 delete p1; p1 = NULL;
 return 0;
}