【发布时间】:2012-11-11 02:57:54
【问题描述】:
我无法理解一些 C++ 概念。
什么时候使用成员指针和成员变量比较合适?
假设我有一个树结构,因此有一个Node 类。我的直觉是为其Data 和Edge 使用一个变量(因为Node“拥有”Data)和一个指向父Node 的指针。这是正确的吗?
class Node {
public:
Data data;
Edge edge;
Node *parent;
}
当我为Node 类实现自定义创建者方法时,我还必须初始化成员变量(但不是指针?)。对于根Node,我可以将父指针设置为NULL。
但是我该如何处理Edge 变量?根Node 没有父级,也没有从其父级指向它的Edge。我可以以某种方式将其设置为“零”值吗?如果重要的话,Edge 类没有默认构造函数,而是像这样:Edge(int length, int width)。
【问题讨论】:
-
Edge代表什么?它是如何定义的? -
@Jawap 为什么不在
Edge类中添加构造函数Edge()来将边初始化为零。构造函数重载! -
@larsmans 节点与其父节点之间的边。它存储有关边的属性,例如长度、名称。
-
@GrijeshChauhan 如何将其初始化为零?是否必须添加成员变量 isZero 并将其设置为 true?
-
@Jawap :在
Edge类中再添加一个构造函数。Edge(){ this->length=0; this->width=0; }但@sampson-chen 给出了更好的解决方案。以及称为函数参数默认初始化的概念。
标签: c++ oop class constructor member-variables