IAE*_*IAE 1 c++ function linked-list
这真的开始让我感到困惑.我何时使用它们,何时不使用它?
例如,我在链接列表上读取.cpp,其类声明为:
struct CarPart
{
long PartNumber;
char Partname[40];
double UnitPrice;
CarPart *next;
};
class ListOfParts
{
int size;
public:
CarPart *head;
ListOfParts();
~ListOfParts();
const int count() const;
void insert( CarPart *item );
CarPart *retrieve( int pos );
};
Run Code Online (Sandbox Code Playgroud)
有了这段代码,为什么我可以写
ListOfParts *pPart = new ListOfParts();
CarPart *pCarPart = new CarPart;
Run Code Online (Sandbox Code Playgroud)
声明ListOfParts的实例需要(),但不是我的CarPart?那令我困惑.当我之前问过一个问题时,人们告诉我这样的声明是一个返回ListOfParts对象的函数,而不是实际的构造函数.所以我猜这仍然是不同的东西.
这里发生了什么事?
PS:我是否正确假设count()右边的const意味着我无法修改count中的任何值?
在堆上分配时,ListOfParts不需要声明类的实例().两种形式都有效:
ListOfParts *pPart1 = new ListOfParts();
ListOfParts *pPart2 = new ListOfParts;
Run Code Online (Sandbox Code Playgroud)
编辑: 正如评论者指出的那样,在初始化POD类型时会有所不同(但是与您的代码示例无关).
但是,在声明堆栈变量或静态变量时,这很重要,因为表单与()声明函数相同.
ListOfParts pPart1(); // a function prototype
ListOfParts pPart2; // a object construction
Run Code Online (Sandbox Code Playgroud)
const到右边count()意味着你不能修改任何值,当前对象内部在此功能中,这将是this->size与this->head(注意,你仍然可以改变的对象指向的head).
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |