也就是训练将原来的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. The Grove(poj 3182)

    题意:一个n*m(n,m<=50)的矩阵有一片连着的树林,Bessie要从起始位置出发绕林子一圈再回来,每次只能向横着.竖着或斜着走一步.问最少需多少步才能完成. /* 如果我们用搜索来写的话, ...

  2. [NOIP2000] 提高组 洛谷P1017 进制转换

    题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^ ...

  3. web.py 使用 db.select 返回的数据只能遍历一次

    2013-10-05 23:04:33|   1. web.py 使用 db.select 返回的数据只能遍历一次import webdb = web.database(dbn='mysql', db ...

  4. 使用Spring Data Redis操作Redis(单机版)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  5. linux的bc命令介绍

    bc命令是一种支持任意精度的交互执行的计算器语言.bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下. 算术操作高级运算bc命令它可以 ...

  6. HashMap、HashTable、TreeMap 深入分析及源代码解析

    在Java的集合中Map接口的实现实例中用的比較多的就是HashMap.今天我们一起来学学HashMap,顺便学学和他有关联的HashTable.TreeMap 在写文章的时候各种问题搞得我有点迷糊尤 ...

  7. VC++中的int main(int argc, char argv[])是什么意思

    这是C/C++的一重要函数,叫主函数.无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数:程序执行时就是从这个函数进入的.由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助 ...

  8. win8系统 重装系统如何删除EFI分区

    在PE下(一般重装系统就是在PE下),依次输入如下命令(注意虽然显示的是中文名"磁盘0",但是还是用英文disk 0) list disk select disk 0 clean

  9. HDU3459:Rubik 2&#215;2&#215;2(IDA)

    Problem Description Sonny is probably the only computer science Ph.D. student who cannot solve a Rub ...

  10. easyui使用心得

    一.搭建easyui运行环境 1.下载easyui压缩文件 2.将降压后的文件添加至webapp目录下 3.引用5个必须的js和css文件  <!--引入easyui样式文件--> < ...