我一直在读我的班级代码。并且在析构函数中的一个变量上真的很困惑。这是代码BTW,这是一个链表头文件。我认为变量没有定义,但使用的是n;
#include <iostream>
using namespace std;
class LinkedList
{
private:
struct node
{
int info;
node * next;
};
typedef node * nodeptr;
nodeptr start;
int count;
public:
// Constructor
LinkedList()
{
start = NULL;
count = 0;
}
// Destructor
~LinkedList()
{
nodeptr p = start, n;
while (p != NULL)
{
n = p;
p = p->next;
delete n;
}
}
这首n出现的第一次来自线路
nodeptr p = start,n;
所以请教我为什么使用像这样的变量是合法的。任何命令都表示赞赏。
谢谢
答案 0 :(得分:2)
不,它的定义。
nodeptr p = start, n;
定义了2个变量,p
和n
。 p
初始化start
,而n
则不是。{/ p>
答案 1 :(得分:2)
在C ++语言中(就像在C中一样),每个声明都可以包含多个声明符。 E.g。
int a, b, c;
声明(并定义)三个变量:a
,b
和c
类型int
。您可以选择将初始化程序添加到某些声明符(或所有声明符)
int a = 5, b, c;
你的
nodeptr p = start, n;
完全是一回事。它声明(并定义)两个变量:p
和n
。 p
有一个初始化程序,n
没有。所以,你的断言n
是&#34;未定义&#34;显然不是真的。
答案 2 :(得分:0)
完全合法的是在一行代码中声明多个变量。但请注意,在您的示例中,start和n都将是nodeptr类型。但是你不能有这样的东西: int a,float b,double c; //这是非法的