我可以在析构函数中使用未在头文件中定义的变量吗?

时间:2015-09-30 03:27:54

标签: c++ linked-list destructor

我一直在读我的班级代码。并且在析构函数中的一个变量上真的很困惑。这是代码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; 所以请教我为什么使用像这样的变量是合法的。任何命令都表示赞赏。

谢谢

3 个答案:

答案 0 :(得分:2)

不,它的定义。

nodeptr p = start, n;定义了2个变量,pnp初始化start,而n则不是。{/ p>

答案 1 :(得分:2)

在C ++语言中(就像在C中一样),每个声明都可以包含多个声明符。 E.g。

int a, b, c;

声明(并定义)三个变量:abc类型int。您可以选择将初始化程序添加到某些声明符(或所有声明符)

int a = 5, b, c;

你的

nodeptr p = start, n;

完全是一回事。它声明(并定义)两个变量:pnp有一个初始化程序,n没有。所以,你的断言n是&#34;未定义&#34;显然不是真的。

答案 2 :(得分:0)

完全合法的是在一行代码中声明多个变量。但请注意,在您的示例中,start和n都将是nodeptr类型。但是你不能有这样的东西: int a,float b,double c; //这是非法的