C++:练习:类的一些简单例题(学习编程的前期需要大量的读和写基本C++代码)

2014年1月21日 内容整理自《程序设计教程:用C++语言编程 第三版》 陈家骏 郑滔

例题1:用类来实现"栈"这一数据结构

#include<iostream>
//数据抽象和类的解决方案
//先定义栈的类型,这里采用类实现
//它把栈数据的表示和对栈数据的操作放在一起来描述
const int STACK_SIZE=100;
class Stack{
public:
Stack(){
top=-1;
}//构造函数
void push(int i){
if(top==STACK_SIZE-1){
std::cerr<<"Stack is overflow\n";
exit(-1);
}
else{
top++;
buffer[top]=i;
return;//终止函数
}
}//void

void pop(int &i)

//用i拿出来
{
if(top==-1){
std::cerr<<"Stack is empty.\n";
exit(-1);
}
else{
i=buffer[top];
top--;
return;
}
}//pop
private:
int top;
int buffer[STACK_SIZE];//顺序栈的实现数组buffer
};//class stack

//基于上面的栈类来使用栈类型数据

int main(){
Stack st;//定义一个栈类型的对象st,它会自动地调用st.Stack()并对st进行初始化
st.push(12);//把12放进栈st
int x;
st.pop(x);//把栈顶元素退栈并且存入变量x
st.top=-1;//error:top是私有变量,对用户不可见
st.top++;//error
st.buffer[st.top]=12;//error
st.f();//error没有提供操作f()

}

例题2:类的成员函数:

  • 可以在类内声明和定义
  • 也可以在类内声明,在类外定义(尤其注意书写格式)
成员的访问控制--信息隐藏
  • public:成员的访问不受限制,在程序中的任何地方都可以访问一个类的public成员
  • private:成员只有在本类和友元中访问,一般情况下类的数据成员,和在类的内部使用的成员函数都应该指定为private,只有提供给外界使用的成员函数才制定为public;指定为public的访问控制成员构成了类与外界的接口(interface),在一个类的外部只能访问该类接口中的成员。
  • protected:成员只能在本类、友元和派生类中访问,在之后的文章中仔细讨论。
各种结构的默认访问控制
  • class(类)的默认访问控制是private
  • struct(结构) 的默认访问控制是public
  • 联合成员的 默认访问控制是public

【例题3】用链表实现栈类Stack

复制代码
#include<iostream>
using namespace std;

class LinkStack{
private:
    struct Node{
        int content;//结点数据域
        Node* next;//结点指针域
    }*top;
public:
    LinkStack(){top= nullptr;}//构造函数
    void push(int i);//声明函数push,功能是入栈
    void Pop(int& i);//声明函数pop,功能是出栈
};//Class LinkStack

void LinkStack::push(int i){
    Node *p=new Node;//
    if(p==nullptr){
        cerr<<"Stack is overflow\n";
        exit(-1);
    }else{
        p->content=i;
        p->next=top;//头插法
        top=p;
        return;
    }
}//push函数定义完毕


void LinkStack::Pop(int &i) {
    if(top== nullptr){
        cerr<<"Stack is Empty.\n";
        exit(-1);
    }else{
        Node *p=top;
        top=top->next;
        i=p->content;
        delete p;
        return;
    }
}//pop函数定义完毕

int main(){


}
相关推荐
努力学习的小廉2 分钟前
我爱学算法之—— 递归回溯综合(二)
开发语言·算法
sheji52614 分钟前
JSP基于信息安全的读书网站79f9s--程序+源码+数据库+调试部署+开发环境
java·开发语言·数据库·算法
2301_763472464 分钟前
C++网络编程(Boost.Asio)
开发语言·c++·算法
毕设源码-邱学长5 分钟前
【开题答辩全过程】以 基于Java Web的电子商务网站的用户行为分析与个性化推荐系统为例,包含答辩的问题和答案
java·开发语言
依依yyy9 分钟前
沪深300指数收益率波动性分析与预测——基于ARMA-GARCH模型
人工智能·算法·机器学习
程序员清洒10 分钟前
Flutter for OpenHarmony:Text — 文本显示与样式控制
开发语言·javascript·flutter
摇滚侠20 分钟前
Java项目教程《尚庭公寓》java项目从开发到部署,技术储备,MybatisPlus、MybatisX
java·开发语言
轩情吖32 分钟前
Qt的窗口
开发语言·c++·qt·窗口·工具栏·桌面级开发
€81132 分钟前
Java入门级教程24——Vert.x的学习
java·开发语言·学习·thymeleaf·数据库操作·vert.x的路由处理机制·datadex实战
L1869245478241 分钟前
无外设条件下的自动找眼V2
c++