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
原创粉丝点击