当前位置: 首页 > news >正文

【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C++,也用C语言实现过栈,就我们当前所更新过的有关C++学习内容以栈为例子,来简单对比一下C语言和C++。

1.C++中栈的实现

 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 ,下面是C++实现的栈,

Stack.cpp一个文件实现就行。

#include <iostream>
#include <assert.h>
using namespace std;
typedef int STDateType;class Stack //栈类
{
public: //类的方法(成员函数)void STInit(int n = 4) //栈初始化,用到了缺省参数{_a = (STDateType*)malloc(n * sizeof(STDateType));if (nullptr == _a){perror("malloc fail");return;}_top = 0;_capacity = n;}void STDistroy()  //栈的销毁{free(_a);_a = nullptr;_top = _capacity = 0;}void STPush(STDateType x) //入栈{if (_top == _capacity){int newcapacity = _capacity * 2;STDateType* tmp = (STDateType*)realloc(_a, newcapacity * sizeof(STDateType));if (tmp == nullptr){perror("realloc fail");return;}_a = tmp;_capacity = newcapacity;}_a[_top] = x;_top++;}void STPop() //出栈{assert(_top > 0);_top--;}STDateType STTopDate() //获取栈顶元素{assert(_top > 0);return _a[_top - 1];}bool STEmpty() //判断栈是否为空{return _top == 0;}int STSize() //获取栈元素个数{return _top;}private:  //类的属性(成员变量)STDateType* _a;int _top;int _capacity;
};

在同一个文件的main函数里测试一下。 

int main()
{Stack st;st.STInit();st.STPush(1);st.STPush(2);st.STPush(3);while (!st.STEmpty()){cout << st.STTopDate() << " ";st.STPop();}st.STDistroy();return 0;
}

 

2.C语言与C++对比

C++面向对象有3大特征:封装、继承、多态。Stack的对比我们可以初步了解一下封装。

C++中数据和函数都放在了类里面,通过访问限定符进行了限制,不能再随意通过对象直接进行修改数据,这是C++封装的一种体现,这个是最重要的变化。这里的封装本质就是一种更严格规范的管理,避免出现乱访问修改问题。C++的封装后续还要不断学习。

C++中有一些相对方便的语法,比如Init给缺省参数会方便很多,成员函数不用传对象地址,因为this指针隐含的传递了,方便面很多,类型不再需要typedef,直接用类名。

本篇就介绍到这里,拜拜~

http://www.lryc.cn/news/415943.html

相关文章:

  • mysql定时备份脚本
  • 云原生 (1)
  • gitlab-pages创建静态站点
  • Python爬虫技术 案例集锦
  • 实战OpenCV之环境安装与配置
  • Android应用开发面试之Jetpack面试题分析汇总
  • 【数据结构】栈的概念、结构和实现详解
  • LeetCode 每日一题 2024/7/29-2024/8/4
  • Golang死锁vs操作系统死锁
  • c/c++中π怎么定义
  • 基于whisper流式语音识别
  • Web3 市场暴跌的时候,哪些token跌的少,哪些还涨了? binance 数据爬取及分析
  • ffmpeg获得视频的音频文件
  • Robot Operating System——深度解析单线程执行器(SingleThreadedExecutor)执行逻辑
  • 【TS】使用npm全局安装typescript
  • 安全用户角色权限
  • 代理模式学习
  • 深入理解Go 语言信号量 Semaphore
  • VisualStudio2019下载与安装
  • 李宏毅老师机器学习常见英语词汇
  • 人工智能时代,程序员如何保持核心竞争力?
  • WiFi to Ethernet: 树莓派共享无线连接至有线网口,自动通过Captive Poartal网页登录认证
  • 【神软大数据治理平台-高级动态SQL(接口开发)】
  • 【Java数据结构】Map和Set超详细两万字讲解(内含搜索树+哈希表)
  • 中国制造2025,会抛弃精益生产吗?
  • Rust 循环
  • 数据结构(其四)--特殊矩阵的存储
  • 系统化学习 H264视频编码(06)哥伦布编码
  • 手机在网状态接口如何对接?(一)
  • 数据结构链表2(常考习题1)(C语言)