我正在尝试创建类'cls'的新对象。我做了一个无参数的构造函数,据我所知应该构造一个新的对象。但是程序崩溃,并显示一条消息“ Segmentation Fault Core Dumped”。
但是,如果我取消注释第13行 d =新int; 该程序运行正常。
///////////////////////////////////////
#include <iostream>
#include <vector>
using namespace std;
class cls
{
private:
int *d;
public:
cls() {} //no args ctor
cls(int a) //1 arg ctor
{
//d = new int;
*d = a;
}
};
int main()
{
cls m{10};
cls m1;
cout<<"Testing if program is still fine"<<endl;
return 0;
}
答案 0 :(得分:3)
*d = a;
很可能会导致崩溃,因为d
没有指向任何有效的东西(尚未初始化)。
为什么d
首先是指针?如果只是将其设置为简单的int
,那么您还将解决问题。
答案 1 :(得分:0)
d
是一个指针,但未在cls(int a)
处初始化,d
指向一个未知的地址,因此有时它不会崩溃,您最好像这样编码:
#include <iostream>
#include <vector>
using namespace std;
class cls
{
private:
int d;
public:
cls() {} //no args ctor
cls(int a) //1 arg ctor
{
d = a;
}
};
int main()
{
cls m{10};
cls m1;
cout<<"Testing if program is still fine"<<endl;
return 0;
}