• C++程序的多文件组成


    C++程序的多文件组成

    【例3.32】 一个源程序按照结构划分为3个文件
    // 文件1 student.h (类的声明部分)
    #include<iostream.h>
    #include<string.h>
    class Student {
    private:
        char *name; // 学生姓名
        char *stu_no; // 学生学号
        float score; // 学生成绩
    public: // 类的外部接口
        Student(char *name1,char *stu_no1,float score1); // 构造函数
        ~Student(); // 析构函数
        void modify(float score1); // 数据修改
        void show(); // 数据输出
    };
    
    // 文件2 student.cpp (类的实现部分)
    #include "student.h" // 包含类的声明文件
    Student∷Student(char *name1,char *stu_no1,float score1)
    {
        name=new char[strlen(name1)+1];
        strcpy(name,name1);
        stu_no=new char[strlen(stu_no1)+1];
        strcpy(stu_no,stu_no1);
        score=score1;
    }
    Student∷~Student()
    {
        delete []name;
        delete []stu_no;
    }
    void Student∷modify(float score1)
    { score=score1; }
    void Student∷show()
    {
        cout<<"
     name: "<<name;
        cout<<"
     stu_no: "<<stu_no;
        cout<<"
     score: "<<score;
    }
    
    // 文件3 studentmain.cpp (类的使用部分)
    #include "student.h" // 包含类的声明文件
    void main()
    {
        Student stu1("Liming","990201",90);
        stu1.show();
        stu1.modify(88);
        stu1.show();
    }
    
    【例3.33】 利用类表示一个堆栈(stack),并为此堆栈建立push()、 pop()及显示堆栈内容的showstack()等函数
    //文件1 stack.h
    #include <iostream.h>
    #include <iomanip.h>
    #include <ctype.h>
    const int SIZE=10;
    class stack{
        int stck[SIZE]; // 数组,用于存放栈中数据
        int tos; // 栈顶位置(数组下标)
    public:
        stack();
        void push(int ch); // 将数据ch压入栈
        int pop(); // 将栈顶数据弹出栈
        void ShowStack();
    };
    
    // 文件2 stack.cpp
    #include <iostream.h>
    #include "stack.h"
    stack∷stack() // 构造函数,初始化栈
    { tos= 0; }
    void stack∷push(int ch)
    {
        if(tos==SIZE){
            cout<<"Stack is full";
            return;
        }
        stck[tos]=ch;
        tos++;
        cout<<"You have pushed a data into the stack!
    ";
    }
    int stack∷pop()
    {
        if (tos==0){
            cout<<"Stack is empty";
            return 0;
        }
        tos--;
        return stck[tos];
    }
    void stack∷ShowStack()
    {
        cout<<"
     The content of stack: 
    " ;
        if (tos==0){
            cout<<"
    The stack has no data!
    ";
            return;
        }
        for (int i=tos-1; i>=0;i--)
            cout<<stck[i]<<" ";
        cout<<"
    
    ";
    }
    
    //文件3 stackmain.cpp
    #include <iostream.h>
    #include "stack.h"
    main()
    {
        cout<<endl;
        stack ss;
        int x;
        char ch;
        cout<<" <I> ------ Push data to stack
    ";
        cout<<" <O> ------ Pop data from stack
    ";
        cout<<" <S> ------ Show the content of stack
    ";
        cout<<" <Q> ------ Quit... 
    ";
        while (1){
            cout<<"Please select an item: ";
            cin>>ch;
            ch=toupper(ch);
            switch(ch){
                case 'I':
                    cout<<"
     Enter the value that "<<"you want to push: ";
                    cin >>x;
                    ss.push(x);
                    break;
                case 'O':
                    x=ss.pop();
                    cout<<"
     Pop "<<x<<" from stack.
    "; break;
                case 'S':
                    ss.ShowStack();
                    break;
                case 'Q':
                    return 0;
                default:
                    cout<<"
     You have inputted a wrong item! Please try again!
    ";
                    continue;
            }
        }
    }
    
  • 相关阅读:
    thinkphp使用ajax程序报500错误
    非隐藏转发和隐藏转发的区别及选择
    表单文件(图片)上传到服务器,权限自动变成363,无法访问
    我收到了互联网应急中心的通报!记sqlmap的正确打开方式。
    css字体可以小于12px!被小米官网打脸
    阿里云CDN添加域名80端口和443端口什么区别?
    网站使用海外服务器,国内访问很慢的解决方案
    linux下设置php文件不区分大小写
    国际化
    Spring boot2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/whale90830/p/10542444.html
Copyright © 2020-2023  润新知