C++基础实例-类(7)
来源:互联网 发布:三门会计软件下载 编辑:程序博客网 时间:2024/05/16 19:28
enum与class
**在C++中,虚函数可称其为他的灵魂,其中加入指针,才会真正体现他的美妙。#if 0/*enum与class*/#include <iostream>using namespace std;enum Color {Red,Yellow,Green,White};//圆类Circle的定义class Circle{ float radius;public: Circle(float r) {radius=r;} float Area(){ return 3.1416*radius*radius; }};//桌子类Table的定义class Table { float height;public: Table(float h) {height=h;} float Height() { return height; }};//圆桌类RoundTable的定义class RoundTable:public Table,public Circle { Color color;public: RoundTable(float h,float r,Color c); //构造函数 int GetColor() { return color; }};//圆桌构造函数的定义RoundTable::RoundTable(float h,float r,Color c):Table(h),Circle(r){ color=c;}//main()函数的定义main() { RoundTable cir_table(10.0,3.0,Yellow); cout<<"The table properties are:"<<endl; //调用Height类的成员函数 cout<<"Height="<<cir_table.Height()<<endl; //调用circle类的成员函数 cout<<"Area="<<cir_table.Area()<<endl; //调用RoundTable类的成员函数 cout<<"Color="<<cir_table.GetColor()<<endl; }#endif
构造与析构
#if 0/*构造与析构*/#include <iostream>using namespace std;//定义一个枚举类型enum Color {Red,Yellow,Green,White};//圆类Circle的定义class Circle { float radius;public: Circle(float r) { radius=r; cout<<"Circle initialized!"<<endl; } ~Circle() { //析构函数 cout<<"Circle destroyed!"<<endl; } float Area() { return 3.1416*radius*radius; }};//桌子类Table的定义class Table { float height;public: Table(float h) { height=h; cout<<"Table initialized!"<<endl; } ~Table() { //析构函数 cout<<"Table destroyed!"<<endl; } float Height() { return height; }};//圆桌类RoundTable的定义class RoundTable:public Table,public Circle { Color color;public: RoundTable(float h,float r,Color c); //构造函数 int GetColor() { return color; } ~RoundTable() { //析构函数 cout<<"RoundTable destroyed!"<<endl; }};//圆桌构造函数的定义RoundTable::RoundTable(float h,float r,Color c):Table(h),Circle(r){ color=c; cout<<"RoundTable initialized!"<<endl;}//测试多继承中构造函数和析构函数的执行方式main() { RoundTable cir_table(15.0,2.0,Yellow); cout<<"The table properties are:"<<endl; //调用Height类的成员函数 cout<<"Height="<<cir_table.Height()<<endl; //调用circle类的成员函数 cout<<"Area="<<cir_table.Area()<<endl; //调用RoundTable类的成员函数 cout<<"Color="<<cir_table.GetColor()<<endl; }#endif
虚函数
#if 0/*虚函数*/#include<iostream>using namespace std;//定义有两个虚函数的基类class Base {public: //定义两个虚函数 virtual void aFn1(void){ cout<<"aFnl is in Base class."<<endl; } virtual void aFn2(void) { cout<<"aFn2 is in Base class."<<endl; } //定义非虚函数 void aFn3(void) { cout<<"aFn3 is in Base class."<<endl; }};//派生类Derived_1中重新定义了基类中的虚函数aFn1class Derived_1:public Base{public: void aFn1(void) { //覆盖aFn1()函数 cout<<"aFnl is in First derived class."<<endl; } // void aFn3(void) { 语法错误,不是虚函数 // cout<<"aFn3 is in First derived class."<<endl; //}};//派生类Derived_2中重新定义了基类中的虚函数aFn2class Derived_2:public Base{public: void aFn2(void){ //覆盖aFn2()函数 cout<<"aFn2 is in Second derived class."<<endl; } // void aFn3(void) { 语法错误 // cout<<"aFn3 is in Second derived class."<<endl; //}};//main()函数的定义main(void){ //创建和使用基类Base的对象 Base b; cout<<"Base:"<<endl; b.aFn1(); b.aFn2(); b.aFn3(); cout<<"----------------------"<<endl; //创建和使用派生类Derived_1的对象 Derived_1 d1; cout<<"Derived_1:"<<endl; d1.aFn1(); d1.aFn2(); d1.aFn3(); cout<<"----------------------"<<endl; //创建和使用派生类Derived_2的对象 Derived_2 d2; cout<<"Derived_2:"<<endl; d2.aFn1(); d2.aFn2(); d2.aFn3();}#endif
纯虚函数
#if 0/*纯虚函数*/#include<iostream>using namespace std;//定义抽象类class Base {public: //定义两个纯虚函数 virtual void aFn1(void)=0; virtual void aFn2(void)=0;};//派生类Derived_1中覆盖了基类中的纯虚函数class Derived_1:public Base{public: void aFn1(void) { cout<<"aFnl is in First derived class."<<endl; } void aFn2(void) { cout<<"aFn2 is in First derived class."<<endl; }};//派生类Derived_2中覆盖了基类中的纯虚函数class Derived_2:public Base{public: virtual void aFn1(void){ cout<<"aFn1 is in Second derived class."<<endl; } void aFn2(void){ cout<<"aFn2 is in Second derived class."<<endl; }};//main()函数中测试抽象类及其派生类的对象main(void){ //用抽象类不能创建对象 // Base b; 语法错误 // b.aFn1(); // b.aFn2(); //创建和使用Derived_1类的对象 Derived_1 d1; cout<<"Derived_1 d1:"<<endl; d1.aFn1(); d1.aFn2(); cout<<"------------------"<<endl; //创建和使用Derived_2类的对象 Derived_2 d2; cout<<"Derived_2 d2:"<<endl; d2.aFn1(); d2.aFn2();}#endif
双向链表的实现
/*双向链表实现*/#include<iostream>using namespace std;//定义节点(数据对象)的接口class Node{ //声明list类为本类的友元类 friend class list;//私有成员 private: int Data; //节点数据 Node *previous; //前趋指针 Node *next; //后继指针};//定义双向链表list的接口声明class list{//私有成员 private: Node *Head; //链表头指针 Node *Tail; //链表尾指针//定义接口函数public: //构造函数 list(); //析构函数 ~list(); //从链表尾后添加数据 void Build_HT(int Data); //从链表前头添加数据 void Build_TH(int Data); //从头到尾显示数据 void list::Display_HT(); //从尾到头显示数据 void list::Display_TH(); //清除链表的全部数据 void Clear();};//main()函数测试双向链表int main(void){ list list1; int i; //从尾添加数据 cout<<"Add to the back of the list1:"<<endl; for (i=1;i<=20;i=i+2) { list1.Build_HT(i); cout<<i<<" "; } cout<<endl; //从头添加数据 cout<<"Add to the front of the list1:"<<endl; for (i=0;i<=20;i=i+2) { list1.Build_TH(i); cout<<i<<" "; } cout<<endl; //显示链表 list1.Display_HT(); list1.Display_TH(); return 0;}//list类函数的定义//构造函数的定义list::list(){ //初值 Head=0; Tail=0;}//析构函数的定义list::~list(){ Clear(); }//从链表尾后添加数据void list::Build_HT(int Data){ Node *Buffer; Buffer=new Node; Buffer->Data=Data; if(Head==0) { Head=Buffer; Head->next=0; Head->previous=0; Tail=Head; } else { Tail->next=Buffer; Buffer->previous=Tail; Buffer->next=0; Tail=Buffer; }}//从链表前头添加数据void list::Build_TH(int Data){ Node *NewNode; NewNode=new Node; NewNode->Data=Data; if(Tail==0) { Tail=NewNode; Tail->next=0; Tail->previous=0; Head=Tail; } else { NewNode->previous=0; NewNode->next=Head; Head->previous=NewNode; Head=NewNode; }}//从头到尾显示数据void list::Display_HT(){ Node *TEMP; TEMP=Head; cout<<"Display the list from Head to Tail:"<<endl; while(TEMP!=0) { cout<<TEMP->Data<<" "; TEMP=TEMP->next; } cout<<endl;}//从尾到头显示数据void list::Display_TH(){ Node *TEMP; TEMP=Tail; cout<<"Display the list from Tail to Head:"<<endl; while(TEMP!=0) { cout<<TEMP->Data<<" "; TEMP=TEMP->previous; } cout<<endl;}//清除链表的全部数据void list::Clear(){ Node *Temp_head=Head; if (Temp_head==0) return; do { Node *TEMP_NODE=Temp_head; Temp_head=Temp_head->next; delete TEMP_NODE; } while (Temp_head!=0);}
0 0
- C语言基础实例
- C语言基础实例
- c基础实例
- 【C#】基础实例演练
- opencv基础实例(C++)
- C++基础实例-类(7)
- mysql基础:mysql与C结合实例
- mysql基础:mysql与C结合实例
- Object-C类实例
- 【C#】类与实例
- C++基础实例-类(6)
- Python基础-类和实例
- Python基础-类和实例
- 用C开发PHP扩展 实例(基础版)
- Objective-C基础之实例变量的默认值
- 链表基础操作+实例[C语言实现]
- C语言基础—小实例:三天打渔两天晒网
- Linux Socket 基础实例 (C语言版)-转
- ipvsadm 命令参考
- 【VS开发】PCIe体系结构的组成部件
- remote tracking branches
- 详解OJ(Online Judge)中PHP代码的提交方法及要点【举例:ZOJ 1001 (A + B Problem)】
- Android Orm框架分析
- C++基础实例-类(7)
- Java实现-----问题和对应答案的添加和删除(前台和后台)
- java 的序列化和反序列化的概念及简单使用
- POJ 2376- Cleaning Shifts(贪心)
- bzoj 1455: 罗马游戏(可并堆)
- socket中read、write、send、recv函数的比较
- tomcat配置单向认证
- Binder机制
- android 实现SQLite开启事务