structStack{ int top; int buffer[STACK_SIZE]; }; //this是指向自己的指针 //对象的函数至少都持有一个this boolpush(Stack *constthis,int i);{ if (top == STACK_SIZE-1) { cout << "Stack is overflow.\n"; returnfalse; }else{ top++; buffer[top] = i; returntrue; } } boolpop(Stack *constthis,int& i){ if (top == -1) { cout << "Stack is empty.\n"; returnfalse; }else { i = buffer[top]; top--; returntrue; } } voidmain(){ Stack st1, st2; st1.top = -1; st2.top = -1; int x; push(st1,12); pop(st1,x); }
3. OOP 面向对象
Concepts 面向对象概念
Program = Object1 + Object2 + … + Objectn
对象:数据 + 操作
信息:函数调用
类
Classify 分类
Object-Oriented 面向对象
Object-Based(Ada:基于对象的语言)
Without Inheritance
4. OOP评价标准
高扩展性
质量
外部评价指标:正确性、效率、健壮性、可靠性、可用性、可重用性
内部评价指标:可读性、可维护性、可移植性
5. ENCAPSULATION(封装)
具体到markdown文件中
6. 对象类型的判断
6.1. 方法一:运行时判断
使用if…else
1 2 3 4 5
int i; if(typeid(i) == typeid(int) ) cout << "i is int" << endl ; else cout << "i is not int" << endl ;
6.2. 方法二:编译时判断
1 2 3 4 5 6 7 8 9
template<class T> voidfunc(T t ){ cout << "i is not int" << endl ; } template<> voidfunc<int>(int i){//特化 cout << "i is int" << endl ; } int i; func(i)