【发布时间】:2015-04-10 19:59:28
【问题描述】:
我是 C++ 新手。我正在尝试实现一个 LinkedList,为此我创建了两个类Node 和LinkedList。
我创建了一些测试函数。一个测试Node 创建,另一个测试LinkedList 中的isEmpty 函数。但是,当我尝试测试它们时。在 'testNode()ends up being in the same Node I create insideLinkedListashead` 中创建了什么。
这可能是一个微不足道的问题,但是作为 C++ 的新手,我仍然不清楚这个概念。我想知道为什么它指的是之前创建的同一个实例。
#include <iostream>
#include <assert.h>
using namespace std;
class Node
{
private:
int data;
int next;
public:
int getData(){return data;}
void setData(int new_data) {data = new_data;}
int getNext(){return next;}
void setNext(int new_next) {next = new_next;}
};
class LinkedList
{
Node head;
Node head2;
public:
bool isEmpty()
{
if (head.getData() == 0) {return true;}
return false;
}
};
void testNode()
{
Node aNode;
aNode.setData(15);
aNode.setNext(23);
assert (aNode.getData() == 15);
assert (aNode.getNext() == 23);
}
void testEmptyLinkedList()
{
LinkedList ll;
assert (ll.isEmpty() == true);
}
【问题讨论】:
-
您永远不会在构造函数中初始化
data或next,当您尝试从中读取值时会导致未定义的行为。 -
练习和学习新东西并体验由特定设计引起的问题总是好的,但请记住,您应该避免使用 C/C++ 中的链表。有一个来自 C++ 语言创建者本人的视频,解释了为什么你应该避免这种设计并改用
std::vector。查一下! -
@Barracuda 感谢您提供的信息。我正在做 C++ 学习过程的一部分。当我工作时,我会记住这一点。好信息!。
标签: c++ oop singly-linked-list