Anonymní profil Stamp – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Stamp – Programujte.comAnonymní profil Stamp – Programujte.com

 

Příspěvky odeslané z IP adresy 78.98.4.–

Stamp
C / C++ › C++ Stack implementation
18. 6. 2018   #221393

Ahoj, chcel som implementovať Stack v C++ pomocou OOP a pola (vektor som nechcel).
Stack.cpp
 

// Stack.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Stack.h"
#include <assert.h>
#include <iostream>

Stack::Stack()
{
	Stack::sizeOfStack = 0;
}

Stack::~Stack() {
	delete[] Stack::st;
}

void Stack::push(int num) {
	Stack::st[sizeOfStack++] = num;
}

int Stack::size() {
	return Stack::sizeOfStack;
}

bool Stack::isEmpty() {
	return Stack::sizeOfStack == 0;
}

int Stack::pop() {
	assert(!(Stack::sizeOfStack == 0));
	return Stack::st[sizeOfStack--];
}

void Stack::print() {
	for (int i = 0; i < Stack::sizeOfStack; ++i)
		std::cout << Stack::st[i] << " ";
	std::cout << std::endl;
}

Stack.h
 

#ifndef STACK
#define STACK

class Stack {

	private:
		unsigned short sizeOfStack;
		int *st = new int[sizeOfStack];

	public:
		bool isEmpty();
		int pop();
		void print();
		void push(int num);
		int size();
		Stack();
		~Stack();
		
};
#endif

Otázkou je, že prečo to funguje? Skúšal som iba jeden prípad kedy som to naplnil 4 hodnotami a skúšal
som popovať a fungovalo to. Plán bol dynamicky zväčšovať pole po push() , avšak nejak som na to zabudol , pustil a ide to aj takto. Prepisujem v tomto prípade pamäť ktorú nevlastním? 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý