也就是训练将原来的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++栈的简单实现以及构造器的原理的更多相关文章

  1. HTML标记语言和CSS样式的简单运用(Nineteenth Day)

    曾经励志下去要坚持把每天所学的知识记录下来,可是坚持了几天后,就觉得自己坚持不下去了....这几天自己好好的想了想,觉得不能坚持也得要坚持,因为要对自己负责,所以得学会逼着自己去做,只有这样才能把一件 ...

  2. C语言和C++篇

    C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...

  3. 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇

    转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...

  4. C语言和C++中动态申请内存

      在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h>  ...

  5. 大数据工具比较:R 语言和 Spark 谁更胜一筹?

    本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...

  6. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  7. 聊聊C语言和ABAP

    这个公众号之前的文章,分享的都是Jerry和SAP成都研究院的同事在工作中学到的一些知识和感受.而今天这篇文章,写作的由来是因为最近我又参与了SAP成都数字创新空间应聘者的面试,和一些朋友聊了一些关于 ...

  8. C语言和C++的应用领域都在哪些?学C语言好,还是学习C++好?

    从事嵌入式开发十几年,基本上围绕着这两种编程语言展开,都可以直接操作底层的编程语言,用的越熟练越是感觉工具属性越强.虽然两种编程语言分属于不同的编程思想,用的时间长了觉得差异也不是很大,现在就个人的从 ...

  9. IOS-2-C语言和Objective-C语言衔接学习资料

    前言:在IOS学习中.通常会先学习一周的C语言,两周的Objective-C语言,这是今后开发的最基础最重要的部分,以下给大家分享一下培训课上的精简资料: C语言和Objective-C语言衔接学习资 ...

随机推荐

  1. 常见的 Android 新手误区

    在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的 开发社区,以及从所周知的编程语言(Java),使得开发 ...

  2. tomcat并发数

    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的.更好的硬件,更多的处理器都会使Tomcat支持更多的并发. Tomcat默认的HTTP实现是采用阻塞式 ...

  3. 编译.net .net Core程序 代码,仅做备份

    //创建一个ProcessStartInfo对象 使用系统shell 指定命令和参数 设置标准输出 //编译.net core项目 var psi = new ProcessStartInfo(&qu ...

  4. ABP每次生成前都执行bundle设置

    ABP项目每次编译mvc项目时都会执行bundle,比较耗时. 可以在项目文件(*.csproj)中发现设置了每前生成前执行的命令 <Target Name="PreBuild&quo ...

  5. 前端开发数据mock神器 -- xl_mock

    1.为什么要实现数据 mock 要理解为什么要实现数据 mock,我们可以提供几个场景来解释, 1.现在的开发很多都是前后端分离的模式,前后端的工作是不同的,当我们前端界面已经完成,但是后端的接口迟迟 ...

  6. VM Workstation的Unity Mode有什么用

    正常情况下,如果我启动了一个VM Workstaion的虚拟机,比如是一个Linux系统,并且没运行任何软件,进入Unity mode之后,我真实系统的左下角会有一个虚拟机的图标 点击这个图标可以打开 ...

  7. 【Mongodb教程 第十一课 】MongoDB 聚合

    聚合操作过程中的数据记录和计算结果返回.聚合操作分组值从多个文档,并可以执行各种操作,分组数据返回单个结果.在SQL COUNT(*)和group by 相当于MongoDB的聚集. aggregat ...

  8. Handlebars.js 中文文档

    Home  »  前端   »   Handlebars.js 中文文档 Handlebars.js 中文文档 Posted in 前端 By KeenWon On 2014年4月3日 Views:  ...

  9. C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包括鼠标指针形状

    本实例所有文章文件夹 (一)功能概览 (二)创建项目.注冊热键.显示截图主窗体 (三)托盘图标及菜单的实现 (四)基本截图功能实现 (五)针对拖拽时闪烁卡顿现象的优化 (六)加入配置管理功能 (七)加 ...

  10. sharpdevelop 调整代码字体显示大小

    SharpDevelop中使用ctrl+鼠标滚轮可以调整代码的字体显示大小