c语言和c++栈的简单实现以及构造器的原理
也就是训练将原来的c语言 用类表示出来。。
关于构造器:
//1与类名相同 没有返回值 被系统生成对象时自动调用,用于初始化
//2 可以有参数 构造器重载 默认参数
//3 重载和默认不能同时存在,系统默认生成一个无参的构造器,如果提供了,那么系统不在提供
#include <iostream> using namespace std; typedef struct Stack
{
char space[];
int top;
}Stack;
void init(Stack *s)
{
s->top = ;
memset(s->space,,);
}
int isEmpty(Stack *s)
{
return s->top == ;
}
int isFull(Stack *s)
{
return s->top == ;
} char pop(Stack *s)
{
return s->space[--(s->top)];
}
char push(Stack *s,char c)
{
return s->space[s->top++] = c;
}
int main()
{ Stack st;
init(&st);
if(!isFull(&st))
{
push(&st,'g');
}
if(!isFull(&st))
{
push(&st,'t');
}
if(!isFull(&st))
{
push(&st,'n');
}
if(!isFull(&st))
{
push(&st,'h');
}
if(!isFull(&st))
{
push(&st,'r');
}
while(!isEmpty(&st))
{
cout<<pop(&st)<<endl;
}
return ;
}
c++的实现
//stack.cpp #include <iostream>
#include "stack.h"
using namespace std; bool Stack:: isEmpty()
{
return top == ;
}
bool Stack:: isFull()
{
return top == _size;
} char Stack:: pop()
{
return space[--(top)];
}
char Stack:: push(char c)
{
return space[top++] = c;
}
//stack.h #include <iostream> using namespace std;
//2017/1/14
//construtot 构造器
//1与类名相同 没有返回值 被系统生成对象时自动调用,用于初始化
//2 可以有参数 构造器重载 默认参数
//3 重载和默认不能同时存在 //destructor 析构器
//~与类型相同 无参无返回 用于对象销毁时的内存处理工作
//
class Stack
{
public:
Stack()//这里通过其中一个注释和同时注释可以得到一个结论:
//系统默认生成一个无参的构造器,如果提供了,那么系统不在提供 { //init();
//cout<<"stack()"<<endl;
top = ;
space = new char[]; }
Stack(int size)//重载
{
top = ;
space = new char[size];
_size = size;
}
~Stack()
{
cout<<"析构"<<endl;
}
//void init();
bool isEmpty();
bool isFull();
char pop();
char push(char c);
private: char *space;
int top;
int _size;
};
//main.cpp #include <iostream>
#include "stack.h"
using namespace std;
int main()
{
Stack *ps = new Stack;//无参构造 标配
Stack *ps2 = new Stack();
delete ps;
delete ps2;//此时需要手动
//Stack st;//此时调用无参构造
//为什么不是stack st() 只是因为有一个
//冲突和函数void function();
Stack st();//调用有参构造
//st.init();
for(char y='a';!st.isFull()&&y!='z';y++)
{
st.push(y);
}
while(!st.isEmpty())
{
cout<<st.pop()<<endl;
}
return ;
}
c语言和c++栈的简单实现以及构造器的原理的更多相关文章
- HTML标记语言和CSS样式的简单运用(Nineteenth Day)
曾经励志下去要坚持把每天所学的知识记录下来,可是坚持了几天后,就觉得自己坚持不下去了....这几天自己好好的想了想,觉得不能坚持也得要坚持,因为要对自己负责,所以得学会逼着自己去做,只有这样才能把一件 ...
- C语言和C++篇
C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...
- 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇
转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...
- C语言和C++中动态申请内存
在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h> ...
- 大数据工具比较:R 语言和 Spark 谁更胜一筹?
本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...
- Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较
Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...
- 聊聊C语言和ABAP
这个公众号之前的文章,分享的都是Jerry和SAP成都研究院的同事在工作中学到的一些知识和感受.而今天这篇文章,写作的由来是因为最近我又参与了SAP成都数字创新空间应聘者的面试,和一些朋友聊了一些关于 ...
- C语言和C++的应用领域都在哪些?学C语言好,还是学习C++好?
从事嵌入式开发十几年,基本上围绕着这两种编程语言展开,都可以直接操作底层的编程语言,用的越熟练越是感觉工具属性越强.虽然两种编程语言分属于不同的编程思想,用的时间长了觉得差异也不是很大,现在就个人的从 ...
- IOS-2-C语言和Objective-C语言衔接学习资料
前言:在IOS学习中.通常会先学习一周的C语言,两周的Objective-C语言,这是今后开发的最基础最重要的部分,以下给大家分享一下培训课上的精简资料: C语言和Objective-C语言衔接学习资 ...
随机推荐
- 常见的 Android 新手误区
在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的 开发社区,以及从所周知的编程语言(Java),使得开发 ...
- HDU 5668 Circle
中国剩余定理. 可以手动模拟一下每一次开始的人的编号和结束的人的编号. 每次删掉一个人,对剩下的人重新编号. 这样一次模拟下来,可以得到n个方程 形如:(u[i]+k)%(n-i+1)=v[i] 化简 ...
- 2015轻院校赛 D 社交网络(排列组合)
http://acm.zznu.edu.cn/problem.php?id=1964 题目描述 输入 输出 样例输入 2 2 1 0 1 1 0 3 1 0 1 1 1 0 1 1 1 0 样例输出 ...
- SpringMVC Ueditor1.4.3 未找到上传数据
ueditor自事的fileupload组件与spring的有冲突.将那个类BinaryUploader 重写就可以了 return storageState; ...
- sklearn特征工程总结
转自: http://www.cnblogs.com/jasonfreak/p/5448385.html https://www.zhihu.com/question/28641663/answer/ ...
- [TypeScript] Query Properties with keyof and Lookup Types in TypeScript
The keyof operator produces a union type of all known, public property names of a given type. You ca ...
- 分享一个基于Bootstrap的 ACE框架 入门(MVC+EF)
基于Bootstrap3,拥有强大的功能组件以及UI组件,基本能满足后台管理系统的需求, 而且能根据不同设备适配显示,而且还有四个主题可以切换. 简单入门,源代码下载:https://github.c ...
- Real-Time Compressive Tracking 论文笔记
总体思想 1 利用符合压缩感知RIP条件的随机感知矩阵对多尺度图像进行降维 2 然后对降维的特征採用简单的朴素贝叶斯进行分类 算法主要流程 1 在t帧的时候,我们採样得到若干张目标(正样本)和背景(负 ...
- 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- JavaScript学习14:表单处理
什么是表单? 在HTML中,表单是由<form>元素来表示的.而在JavaScript中,表单相应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLEl ...