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,因此两个操作都是相同的.