构造函数与新的

Jos*_*osh 4 c++ pointers typedef class new-operator

我只想在这里确认区别,以此为例:

class Gate
{
   public:
           Gate(); //Constructor
           void some_fun();
   private:
           int one, two;
           ptr p1;
           Gate* next;
};
typedef Gate* ptr;

Gate::Gate()
{
  one = 0;
  two = 0;
}

void Gate::some_fun()
{
  p1 = new Gate;
  p1 = p1->next;
  p1 = new Gate();
}
Run Code Online (Sandbox Code Playgroud)

在我的例子中,我创建了两个"Gate"的新节点,它们之间的唯一区别是第一个节点没有初始化变量"one和two",而第二个节点没有.

Kon*_*lph 10

C++有两类类型:POD和非POD("POD"代表"普通旧数据"......有点误导性提示).

对于非POD,和之间没有区别.差异仅影响POD,而POD 不会初始化内存,而是默认初始化它.new Tnew T()new Tnew T()

那么POD是什么?所有内置的C++类型(int,bool...)都是.

此外,某些用户定义的类型也是如此.它们的确切定义有点复杂,但对于大多数用途来说,足以说POD不能有自定义构造函数(以及某些其他函数),并且它的所有数据成员本身都必须是POD.有关更多详细信息,请参阅链接的FAQ条目.

由于您的课程不是POD,因此两个操作都是相同的.