avatar
c++ 得最基本问题# Programming - 葵花宝典
m*t
1
一个linked list实现的stack
myStack ss;
ss.push('c');
ss.push('a');
cout <这样输出的结果是 ca
myStack ss;
ss.push('c');
ss.push('a');
char s1 = ss.pop();
char s2 = ss.pop();
cout <这样就对了,输出的结果是 ac
请问问题出在哪里?谢谢。
avatar
o*g
2
猜是<
【在 m******t 的大作中提到】
: 一个linked list实现的stack
: myStack ss;
: ss.push('c');
: ss.push('a');
: cout <: 这样输出的结果是 ca
: myStack ss;
: ss.push('c');
: ss.push('a');
: char s1 = ss.pop();

avatar
p*e
3
Operators in C++ are implemented as function calls.
cout << ss.pop() << ...
avatar
r*y
4
我怎么记得STL里面stack的函数原型是:
void pop();
void push(const T&);
const T& top() const;
T& top();

【在 m******t 的大作中提到】
: 一个linked list实现的stack
: myStack ss;
: ss.push('c');
: ss.push('a');
: cout <: 这样输出的结果是 ca
: myStack ss;
: ss.push('c');
: ss.push('a');
: char s1 = ss.pop();

avatar
m*o
5
nod,lz多半是自己编的

【在 r*******y 的大作中提到】
: 我怎么记得STL里面stack的函数原型是:
: void pop();
: void push(const T&);
: const T& top() const;
: T& top();

avatar
m*t
6
我是自己写的。用引用应该更合适。谢谢指出。

【在 r*******y 的大作中提到】
: 我怎么记得STL里面stack的函数原型是:
: void pop();
: void push(const T&);
: const T& top() const;
: T& top();

avatar
f*y
7
不是引用的问题,是pop和top要分开,主要是exception的问题

【在 m******t 的大作中提到】
: 我是自己写的。用引用应该更合适。谢谢指出。
avatar
y*c
8
int a(0);
cout<我得到的结果是
3 2
按照书上的说法,cout<(cout.operator<所以我也比较迷惑了。
avatar
e*a
9
this is undefined....

【在 y**c 的大作中提到】
: int a(0);
: cout<: 我得到的结果是
: 3 2
: 按照书上的说法,cout<: (cout.operator<: 所以我也比较迷惑了。

avatar
X*r
10
C++里一个重要的概念是序列点(sequence point),当程序运行到一个序列点的时候,
之前的所有副作用都已完成而之后的任何副作用尚未开始。两个相邻的序列点之间的
副作用发生的顺序不一定。同一个变量在两个相邻的序列点之间最多只能被修改一次。
C++标准的1.8里给出了序列点的详细定义并列举了所有的序列点。函数调用之前有
一个序列点,是在函数的所有参数都计算完毕之后而在函数体执行之前。至于函数
参数之间,包括成员函数所对应的对象的计算,它们的先后顺序都是不确定的。
比如f(a,g(b,c));如果a,b,c都是表达式的话,那它们的计算顺序是不确定的。
改换一下形式就是你的例子了。

【在 y**c 的大作中提到】
: int a(0);
: cout<: 我得到的结果是
: 3 2
: 按照书上的说法,cout<: (cout.operator<: 所以我也比较迷惑了。

avatar
y*c
11
谢谢。:)

候,

【在 X****r 的大作中提到】
: C++里一个重要的概念是序列点(sequence point),当程序运行到一个序列点的时候,
: 之前的所有副作用都已完成而之后的任何副作用尚未开始。两个相邻的序列点之间的
: 副作用发生的顺序不一定。同一个变量在两个相邻的序列点之间最多只能被修改一次。
: C++标准的1.8里给出了序列点的详细定义并列举了所有的序列点。函数调用之前有
: 一个序列点,是在函数的所有参数都计算完毕之后而在函数体执行之前。至于函数
: 参数之间,包括成员函数所对应的对象的计算,它们的先后顺序都是不确定的。
: 比如f(a,g(b,c));如果a,b,c都是表达式的话,那它们的计算顺序是不确定的。
: 改换一下形式就是你的例子了。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。