私は、スタッククラスからの数値のプッシュ/ポップに関するC++ブックのサンプルコードを書いて変更しました。これは私の理解のための基本的な質問です。ここにコードがあります。C++でプッシュ/ポップスタッククラスプログラム?
//stakarray.cpp
//a stack as a class
#include <iostream>
using namespace std;
class Stack
{
private:
enum { MAX = 10 };
//int MAX=10;
int st[MAX];
int top;
public:
Stack()
{ top=0; }
void push(int var)
{ st[++top]=var; } //increments stack, input var
int pop()
{ return st[top--]; } //returns var, decrements stack
void show(int var)
{ cout << st[var]<< endl; }
};
int main()
{
//some stack operations
int i;
Stack s1;
s1.push(11);
s1.push(22);
cout<<"1: "<<s1.pop()<<endl; //22
cout<<"2: "<<s1.pop()<<endl; //11
s1.push(33);
s1.push(44);
s1.push(55);
s1.push(66);
for (i=0; i<= 10 ; i++)
{
cout<< "s1[" << i << "]= ";
s1.show(i);
}
return 0;
}
このプログラムの出力は
1: 22
2: 11
s1[0]= 2
s1[1]= 33
s1[2]= 44
s1[3]= 55
s1[4]= 66
s1[5]= 0
s1[6]= 0
s1[7]= 0
s1[8]= 4196896
s1[9]= 0
s1[10]= 4
を与えるなぜS1 [0] = 2、S 1 [8] = 4196896、S1 [10] = 4?プライベートからMAXにアクセスする方法もありますか?クラス内のどこか他の場所で定義する必要がありますか?(グローバル変数またはmain()の一部として使用しないでください)
デバッガを使用してコードをステップ実行して、各行で何が起こるかを確認するような音がします。 – NathanOliver