Start cpp learnning ex1

简单实现一个c++的例子,

头文件stack.h

const int maxStack = 16;
class IStack
{
	public:
		IStack() : _top(0){}
		void Push(int i);
		int Pop();
		
	private:
		int _arr [maxStack];
		int _top;
};

实现类 stack.cpp

#include "stack.h"
#include <cassert>
#include <iostream>

void IStack::Push(int i)
{
	assert(_top < maxStack);
	_arr[_top] = i;
	++_top;
}

int IStack::Pop()
{
	assert(_top > 0 );
	--_top;
	return _arr [_top];
}

int main()
{
	IStack stack;
	stack.Push(1);
	stack.Push(2);
	std::cout << " Popped " << stack.Pop() << std :: endl;
	std::cout << " Popped " << stack.Pop() << std :: endl;
}


makefile 文件

objects = stack.o
edit:$(objects)
    g++ -o edit $(objects)
stack.o:stack.cpp stack.h
    cc -c stack.cpp
clean :
    rm edit $(objects)

----------------------------------------------------------------------------

#include "Istack.h"
#include <cassert>
#include <iostream>

StackSeq::StackSeq(Istack const & stack)
: _iCur(0), _stack(stack)
{}

bool StackSeq::AtEnd() const
{
	return _iCur ==  _stack._top;
}

int Istack::Pop()
{
	assert(_top > 0 );
	--_top;
	return _arr [_top];
}

void Istack::Push(int i)
{
	assert(_top < maxStack);
	_arr[_top] = i;
	++_top;
}

void StackSeq :: Advance()
{
	assert(!AtEnd());
	++_iCur;
}

int StackSeq :: GetNum() const
{
	assert(!AtEnd());
	return _stack._arr[_iCur];
}

int main()
{
	Istack TheStack;
	TheStack.Push(1);
	TheStack.Push(2);
	TheStack.Push(3);
	
	for(StackSeq seq(TheStack);
	!seq.AtEnd();
	seq.Advance())
	{
		std::cout << " " << seq.GetNum() << std :: endl;
	}
	
}

const int maxStack = 16;
class Istack
{
	friend class StackSeq;
	public:
		Istack():_top(0){}
		void Push (int i);
		int Pop();
	private:
		int _arr[maxStack];
		int _top;
};

class StackSeq
{	
	public:
		StackSeq(Istack const & stack);
		bool AtEnd() const;
		void Advance();
		int GetNum() const;
	private:
		Istack const & _stack;
		int _iCur;
};
objects = Istack.o
edit:$(objects)
    g++ -o edit $(objects)
Istack.o:Istack.cpp Istack.h
    cc -c Istack.cpp
clean :
    rm edit $(objects)

你可能感兴趣的:(Start cpp learnning ex1)