为什么要用面向对象码代码= =、

来源:互联网 发布:维普软件 编辑:程序博客网 时间:2024/04/28 16:31

比如吧实现栈

用结构化的思想这样写

#include <iostream>
using namespace std;
#define  STACK_SIZE 100
struct Stack 
{
int top;
int buffer[STACK_SIZE];
};
bool push(Stack &s,int x){
if (s.top ==STACK_SIZE-1)
{
cout<<"Stack OverFlow!"<<endl;
return false;
}else{
s.top++;
s.buffer[s.top] = x;
return true;
}
}
bool pop(Stack &s,int &x){
if (s.top==-1)
{
cout<<"Empty Stack"<<endl;
return false;
}else{
x = s.buffer[s.top];
s.top--;
return true;
}
}
void showElement(Stack &s){
int temp = s.top;
for (int i = temp;i>=0;i--)
{
cout<<s.buffer[i]<<" ";
}
}
void main(){
Stack st;
st.top = -1;
int x;
push(st,12);
showElement(st);
push(st,13);
showElement(st);
pop(st,x);
showElement(st);
pop(st,x);
showElement(st);

}

感觉main方法里面用着的话总是很别扭恩。然后就是面向对象的代码奉上

#include <iostream>
using namespace std;
#define  STACK_SIZE 100
class Stack{
private:
int top;
int buffer[STACK_SIZE];
public:
Stack(){top = -1;}
bool push(int x);
bool pop(int &x);
};
bool Stack::push(int x){
if (top==STACK_SIZE-1)
{
cout<<"Stack OverFlow"<<endl;
return false;
}else{
top++;
buffer[top] = x;
return true;
}
}
bool Stack::pop(int &x){
if (top==-1)
{
cout<<"Empty Stack"<<endl;
return false;
}else{
x = buffer[top];
top--;
return true;
}
}
void main(){
Stack st ;
st.push(12);
st.push(13);
int x ;
st.pop(x);
cout<<x<<" ";
int y ;
st.pop(y);
    cout<<y<<" ";

}


啊哈,感觉面向对象用在顺手多了、、