c++心得00004-stack的函数传值

#include<iostream>

#include<stack>

usingnamespace std;

 

void f(stack<int> x)

{

    x.push(10);

}

 

int main()

{

    stack<int> a;

 

    a.push(1);

    a.push(2);

 

    f(a);

    cout << a.top() << endl;

 

return 0;

}

 

看一下上面的程序,因为函数f的实参x是一个stack类的对象,函数调用时,是用形参a拷贝构造出x,这里ax是两个栈对象,在x中压入10,不会影响到a,在main函数中输出a的栈顶值,还是2

如果把f改为void f(stack<int> &x),函数调用时x就是a的引用,也就是在f()函数内,x就是ax中压入10,也就是a压入10,在main()函数中输出a的栈顶值,那就是10了。

 

 

另外 stack类模板里的类型参数,可以不仅仅是简单数据类型,比如string就是不是简单数据类型,而且还可以是另一个模板类,但这种情况用起来比较复杂。

 

转载于:https://www.cnblogs.com/stigmj/archive/2012/04/22/2464691.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值