如果输入参数采用“指针传递”,那么加 const 修饰可以防止意外地改动该指针,起 到保护作用。

 #include <iostream>

 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
//定义栈的尺寸
const int SIZE = ; //定义处理栈的类模板接口
template <class T> class stack {
T stck[SIZE];
int tos;
public:
stack(void) {
tos = ;
cout << "Stack Initialized." << endl;
}
~stack(void) {
cout << "Stack Destroyed." << endl;
}
void push(T);
T pop(void);
}; //定义栈的成员函数
template <class T> void stack<T>::push(T i)
{
if(tos==SIZE)
{
cout << "Stack is full." << endl;
return;
}
stck[tos++] = i;
}
template <class T> T stack<T>::pop(void)
{
if(tos==)
{
cout << "Stack underflow." << endl;
return ;
}
return stck[--tos];
} //main()函数中测试stack类模板 int main(int argc, char** argv) {
//处理int类型数据的栈
cout<<"stack<int> a :"<<endl;
stack<int> a;
a.push();
a.push();
cout << a.pop() << " ";
cout << a.pop() << endl; //处理double类型数据的栈
cout<<"stack<double> b :"<<endl;
stack<double> b;
b.push(99.3);
b.push(-12.23);
cout << b.pop() << " ";
cout << b.pop() <<endl; //处理char类型数据的栈
cout<<"stack<char> c :"<<endl;
stack<char> c;
for(int i=; i<; i++)
c.push((char) 'A' + i);
for(int i=; i<; i++)
cout <<c.pop();
cout << endl;
return ;
}

如果输入参数采用“指针传递”,那么加 const 修饰可以防止意外地改动该指针,起 到保护作用的更多相关文章

  1. jenkins Build Flow job 输入参数获取和传递

    jenkins Build Flow job 输入参数获取和传递 如果设置Build Flow的job,怎样获取手工输入的参数. 1. 指定构建参数 job配置中,勾选"参数化构建" ...

  2. 字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体

    1.字符串输出输入函数 读入字符串的方法: 1) scanf 特点:不能接收空格 2) gets 特点:可以接受含有空格的字符串 ,不安全 3) fgets(); 特点:可以帮我们自动根据数组的长度截 ...

  3. [Reprint]C++函数前和函数后加const修饰符区别

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...

  4. C++函数前和函数后加const修饰符区别

    class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...

  5. C++ 成员函数前和函数后加const修饰符区别

    博客转载自: https://www.iteblog.com/archives/214.html 分析以下一段程序,阐述成员函数后缀const 和 成员函数前const 的作用 #include< ...

  6. C++函数后面加const修饰

    声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object). 为了声明一个const成 ...

  7. 函数重载不仅仅是看其参数,还要看是否有const修饰

    比如QString有两个函数,可以堂而皇之的存在,原因就在于有了const修饰以后,编译器不把两个函数当作同一个函数名了: QChar * data() const QChar * data() co ...

  8. const修饰指针的三种效果

    当用const进行修饰时,根据const位置的不同有三种不同效果. 判断的标准是:const修饰谁,谁的内容就是不可变的. 1 const int *p = &a; const修饰*p, *p ...

  9. 如果参数是指针,且仅作输入用,则应在类型前加 const,以防止该 指针在函数体内被意外修改

    如果参数是指针,且仅作输入用,则应在类型前加 const,以防止该 指针在函数体内被意外修改. #include <iostream> /* run this program using ...

随机推荐

  1. es6 - 回调深渊

    带着以下疑问来解答以下问题,你会学到很多 1. 回调深渊为什么会出现,为什么需要回调 ? 2. ES6为什么会出现Promise? 3. 回调的作用是什么? 跟闭包有关吗? ES5 ~ ES6 回调深 ...

  2. 查找文本工具grep

    许多时候需要从一大堆的命令输出或文本内容中找出一两行关键的内容,例如从系统用户文件中查找某个用户.如果不借助工具,这将是一项非常繁琐的工作,这时可以使用grep工具对内容进行筛选. grep(glob ...

  3. MySQL 连接方式

    MySQL 连接方式 1:TCP/IP 套接字方式 这种方式会在TCP/IP 连接上建立一个基于网络的连接请求,一般是client连接跑在Server上的MySQL实例,2台机器通过一个TCP/IP ...

  4. react-router-dom Link search 传参

    <Link> 和之前版本没太大区别,重点看下组件属性: to(string/object):要跳转的路径或地址: replace(bool):为 true 时,点击链接后将使用新地址替换掉 ...

  5. C/S 中当服务器进程崩溃的时候 SIGPIPE

    程序还是https://github.com/juniperdiego/Unix-network-programming-of-mine/tree/master/tcpserv02 参考unix网络编 ...

  6. BOM*创建工艺路线

    --工艺路线 DECLARE -- API input variables l_operation_tbl bom_rtg_pub.operation_tbl_type := bom_rtg_pub. ...

  7. 用Drupal快速实现mobile平台服务端【转】

    原文地址:http://www.terrysco.com/node/drupal-as-mobile-backend.html 用Drupal很容易实现一个API,让手机平台或者其他系统使用json的 ...

  8. 使用万网+阿里云服务器(Apache)配置二级域名

    1. 在万网域名解析中添加二级域名解析配置    在下面的主机记录(RR)的栏位添加二级域名名称后点确定按钮即可.     注:需要等一段时间才能生效,请留意万网域名解析列表的生效状态栏位. 2. 在 ...

  9. Android Studio Share Project On Github

    在Android Studio上将项目导入Github上: 1. 创建一个Project.点击VCS -> Enable Version Control Integration... 2.选择G ...

  10. XML文件标签名一致,而属性值不同,如何遍历取值写法 摘录

    <EssentialFunctions>      <Qualification description="We Offer" source="AdDe ...