C++复制构造函数链接堆栈
C++ Copy Constructor Linked Stack
所以我这里有一个类的副本构造函数......
template<class ItemType>
LinkedStack<ItemType>::LinkedStack(const LinkedStack<ItemType>& aStack)
{
// Point to nodes in original chain
Node<ItemType>* origChainPtr = aStack.topPtr;
if (origChainPtr == nullptr)
topPtr = nullptr; // Original stack is empty
else
{
// Copy first node
topPtr = new Node<ItemType>();
topPtr->setItem(origChainPtr->getItem());
// Point to last node in new chain
Node<ItemType>* newChainPtr = topPtr;
// Advance original-chain pointer
origChainPtr = origChainPtr->getNext();
// Copy remaining nodes
while (origChainPtr != nullptr)
{
// Get next item from original chain
ItemType nextItem = origChainPtr->getItem();
// Create a new node containing the next item
Node<ItemType>* newNodePtr = new Node<ItemType>(nextItem);
// Link new node to end of new chain
newChainPtr->setNext(newNodePtr);
// Advance pointer to new last node
newChainPtr = newChainPtr->getNext();
// Advance original-chain pointer
origChainPtr = origChainPtr->getNext();
} // end while
newChainPtr->setNext(nullptr); // Flag end of chain
} // end if
} // end copy constructor
我做了一个简单的程序,但我的教授告诉我我没有使用复制构造函数,我似乎找不到如何做到这一点。我得到的只是这个,但它没有显示第二个对象"lStack2"。
这是我的主要...
#include <iostream>
#include "LinkedStack.h"
using namespace std;
int main(){
int val1, val2, val3, val4;
LinkedStack<int> lStack1;
LinkedStack<int> lStack2;
lStack2 = lStack1;
cout << "Enter the first value: ";
cin >> val1;
cout << "Enter the second value: ";
cin >> val2;
cout << "Enter the third value: ";
cin >> val3;
cout << "Enter the fourth value: ";
cin >> val4;
lStack1.show();
lStack2.show();
return 0;
}
这是我的显示功能...
template <class ItemType>
void LinkedStack<ItemType>::show() const{
Node<ItemType>* entryPtr = topPtr;
while (entryPtr != nullptr){
cout << entryPtr->getItem() << endl;
entryPtr = entryPtr->getNext();
}
}
有人可以帮助弄清楚如何实现复制构造函数吗?
您有两个堆栈
LinkedStack<int> lStack1;
LinkedStack<int> lStack2;
然后将第一个分配给第二个
lStack2 = lStack1;
这利用了赋值运算符。
要使用复制构造函数,你宁愿说
LinkedStack<int> lStack2(lStack1);
lStack2 = lStack1
将调用赋值运算符。要使用复制构造函数,您实际上需要构造对象(在声明它时(:
LinkedStack<int> lStack2(lStack1);
或
LinkedStack<int> lStack2 = lStack1;
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- C++复制构造函数链接堆栈
- C 中的基于链接的堆栈
- 使用链接列表在C 中实现堆栈
- C 链接列表堆栈POP功能崩溃
- 将双重链接列表与C 中的堆栈和队列类链接
- 改组链接的列表堆栈
- 使用链接列表实现堆栈,调试断言失败
- 尝试创建链表堆栈时出现链接器错误
- IOS 目标链接 cocoa 堆栈库,该库写入 C++11 标准错误
- 链接堆栈模板和一堆错误
- 链接堆栈中的唯一指针
- 将链接放到QMainWindow时的Qt浏览器堆栈