资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Object-Oriented Programming1. Abstraction(数据抽象)Encapsulation(hidden implementation)封装性ObjectState,Data, Message, Method, Interface, Operation,FunctionType:All objects of a particular type can receive the same messages.2. Inheritance(继承性)3. Polymorphism(多态性)4. A Better C4.1 / comments/* */4.2 Function Prototypevoid *malloc(size_t);4.3 The new & delete Operators char *p = new char3; int *p = new int3; 4.4 Defining variables anywhereint k;k = 5;int m;m = k+6;4.5 Referenceint k = 8;int &m = k;4.6 Inline function4.7 const5. Object Oriented Programming5.1 AbstractionEncapsulation(hidden implementation)object & classstruct Aint k;float b; int GetK() return k; ;A a;a.k = 555;class Aprivate:int k; /hidden implementationfloat b;public:void SetK(int k) /member functionk = k; ;A a;a.k = 777; /. Xa.GetK() constructor (initialization)destructor(cleanup)class Stack ;5.2 Inheritanceclass Basic;class Derive1 : public Basic;5.3 Polymorphism(多态性)5.3.1 Static PolymorphismOverloading5.3.1.1 function Overloading(函数重载)5.3.1.2 operator Overloading(操作符重载)class Complexdouble m_r;double m_i;Complex(double r=0.0,double i=0.0)m_r=r;m_i=i;void operator()(double r,double i)m_r=r;m_i=i;Complex operator+(const Complex &c)constreturn Complex(m_r+c,m_r, m_i+c,m_i);double GetR() constretur m_r;double GetI() constretur m_i;class ComplexPtrComplex *m_ptr;public:ComplexPtr(Complex &c)m_ptr=c;const ComplexPtr & operator=(Complex * const ptr)m_ptr=ptr;return *this;Complex * operator-()constreturn m_ptr;Complex & operator *() return *m_ptr;Complex &operator (int i)return m_ptri;const Complex &operator (int i) const return m_ptri;ComplexPtr &operator+()m_ptr+;return *this;ComplexPtr &operator+(int)m_ptr+;return *this;void main()Complex c(3,4);ComplexPtr ptr(c);coutGetR()endl;cout(*ptr).GetR()endl;ptr=new Complex10;ptr1(5.6);ptr2=ptr1+c;+ptr;ptr+;l Default Arguments(默认参数)5.3.1.3 Redefining(重定义)l name hidingl Overriding(重写,覆盖,超载,过载)5.3.2 Dynamic polymorphisml Upcasting(向上类型转换)l Virtual Functionl Incremental development(增量式开发)6. File & Stream6.1 Text filecout 123.567 endl;k = 123;cout k;cout.fill($);cout.precision(8);cout.width(7);cout.setf(ios:hex);cout 23 endl;fstream in(in.txt,ios:in);fstream out(out.txt,ios:out);if (!in)return;while (!in.eof()char ch = in.get();out.put(ch); 6.2 Binary file read write7. Templates7.1 Function templatestemplate T Max(T x,T y)return (xy?x : y);7.2 Class templates#include const int STACKSIZE = 50;template class Stack T *m_pItem; int m_top; int m_size;public: Stack(int size = STACKSIZE) m_size = size; m_pItem = new intsize; m_top = -1; void Push(T item) m_pItem+m_top = item; T Pop();template T Stack:Pop() return m_pItemm_top-;void main()Stack s(10);int i;for (i=0;i10;i+)s.Push(i);for (i=0;i10;i+)cout s.Pop() endl;8. Exception handling8.1 assert8.2 return true/false8.3 try/catch throw#include class Overflow;class Underflow;const int STACKSIZE = 50;template class Stack T *m_pItem; int m_top; int m_size;public: Stack(int size = STACKSIZE) m_size = size; m_pItem = new intsize; m_top = -1; void Push(T item) if (m_top = m_size-1) throw Overflow(); m_pItem+m_top = item; T Pop();template T Stack:Pop() if (m_top 0) throw Underflow(); return m_pItemm_top-;void main()Stack s(3);int i;tryfor (i=0;i10;i+)s.Push(i);catch(Overflow obj)cout Stack Overflow endl;tryfor (i=0;i10;i+)cout s.Pop() endl;catch(Underflow)cout Stack Underflow endl;global data areastackheap9. Copy-constructorT(const T &)overloading =overloading T(const &T)class Stringchar *p;int l;public:String(char * s=null)if(s)l=:strlen(s);p=new charl+1;:strcpy(p,s)elsep=null;l=0;String (const String &s)if(s.p)l=:strlen(s.p);p=new charl+1;:strcpy(p,s.p)elsep=null;l=0;String()
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号