摘要:First:纯虚函数 纯虚函数是一个在基类中声明的虚函数, 它在该基类中没有定义具体的操作内容, 要求各派生类根据实际需要给出各自的定义。 纯虚函数的格式: virtual 类型 名称(参数)=0; 实际上,它与一般的虚函数成员的原型在书写格式上的不同就在于后面加了“=0”。 声明纯虚函数之后,基类中就可以不再给出函数的实现部分。Second:抽象类 带有纯虚函数的类是抽象类。 抽象类的主要作用是通过它为一个类族建立一个公共的接口,使它们能够更有效地 发挥多态自特性。 抽象类声明了一个类族派生类的共同接口,而接口的完整实现, 即纯虚函数的函数体,要由派生类自己定义。...
阅读全文
摘要:虚函数语法: virtual 类型 名称(){}实际上就是用virtual来限定成员函数。它就成了虚函数了。虚函数声明只能出现在类定义中的函数原型声明中,而不能在成员函数实现的时候。多态要满足三个条件才可以:First: 赋值兼容 (就是由同一个基类派生出来)Second:要声明虚函数Third:由成员函数来调用虚函数 或者 通过指针访问虚函数 或者 通过引用来访问虚函数。下面来看一个例子吧。View Code #include "iostream"#include "cstring"#include "string"#include
阅读全文
摘要:明白了函数重载后,运算符的重载就是小意思了。但是运算符的重载在实现起来有一定的规则。First:双目运算符 运算符重载为成员函数形式。 格式:类名 operator运算符(const 类名 &对象名) const{} 具体的还是看代码吧。 View Code #include "iostream"#include "cstring"#include "string"#include "cstdio"using namespace std;class Complex{public: Complex(doubl
阅读全文
摘要:First: 抽象 面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象公共性质并加以描述的过程。 抽象的过程,也是对问题进行分析和认识的过程。 对问题的抽象应该包括两个方面:数据抽象 和 行为抽象(也就是功能抽象 和 代码抽象)。 用3个整形数来存储时间,分别表示时、分、秒,这个就是数据抽象。 显示时间、设置时间等功能,这就是行为抽象。Second:封装 封装就是将抽象得到的数据和行为相结合,形成一个有机整体,也就是将数据与操作数据的函数代码进行 有机的整合,形成“类”,其中的数据和函数老师类的成员。 这个就不用解释了吧。 View Code class Clo...
阅读全文
摘要:1.正常无参(无初始值)View Code #include "iostream"#include "string"using namespace std;class Point{public: Point() { cout<<"Default constructor called."<<endl; cout<<x<<" "<<y<<endl; }private: int x, y;};int main(){ Point *ptr1=new P
阅读全文
摘要:View Code代码就是这样的简单。无参时的创建。View Code #include "iostream"#include "string"using namespace std;class Point{public: Point(int x, int y) { cout<<"Default constructor called."<<endl; cout<<x<<" "<<y<<endl; }private: int x, y;};int
阅读全文
摘要:两个以上的函数,具相同的函数名,但是形参的个数或者形参的类型不同,编译器根据实参的类型及实参的个数最佳匹配,自动确定调用哪一个函数,这就是函数的重载。1>. int add(int a, int b) {}2>. int add(int a, int b, int c) {}3>. float add(float a, float b) {}三个add函数,具体用哪个一个重载要做的事情了。
阅读全文
摘要:内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。这样就节省了参数传递、控制转移等开销。View Code #include "iostream"#include "string"using namespace std;inline void print(string Str){ cout<<Str<<endl;}int main(){ string Str; while(cin>>Str) print(Str);}
阅读全文