[英]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();
}
}
有人可以幫忙弄清楚如何實現復制構造函數嗎?
lStack2 = lStack1
將調用賦值運算符。 要使用復制構造函數,您實際上需要構造對象(在聲明時):
LinkedStack<int> lStack2(lStack1);
要么
LinkedStack<int> lStack2 = lStack1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.