堆栈概念与C ++中的对象数组

时间:2014-08-13 06:46:06

标签: c++

#include<iostream.h>

using namespace std;

class staticdemo
{
  static int rollno;
  string name;
 public:
  staticdemo()
  {
    cout<<"NAME: ";
    getline(cin,name);
    rollno++;
  }
  int getname()
  {
    cout<<name;
    return 0;
  }
  static int getvalu()
  {
    return rollno;
  }

};
int staticdemo::rollno=10;

int main()
{
  int i,n;
  cout<<"enter the number of studentd:";
  cin>>n;
  staticdemo s[n];
  for(i=0;i<n;i++)
  {
    cout<<"name:"<<s[i].getname();
    cout<<"\nroll no: "<<s[i].getvalu();
  }
  system("pause");
  return 0;
}

我学习C ++,我对堆栈中的对象概念有疑问, 在我上面的程序中,我从用户获取名称,并通过堆栈递增rollno 当我检索列表返回时,它将给出最终更新的堆栈值,如何获取完全更新的rollno值,(如何显示每个名称的唯一rollno), 请发布您的宝贵解决方案

2 个答案:

答案 0 :(得分:0)

如果我正确地阅读了您的问题,您希望rollno变量对于staticdemo类的每个实例都是唯一的吗?那么,您不能将该成员设为static,因为static成员在所有类的实例之间共享。

答案 1 :(得分:0)

我认为我粗略理解你的问题,虽然看起来有点难以得到你需要的东西。

你所做的是部分正确,你使用静态成员变量&#34; rollno&#34;但是,如果你真的想要你需要的东西,你将需要另一个非静态变量来记录索引,例如:

class staticdemo {
    static int rollnoGlobal; // this will record the global count, used by everybody
    int myRollno; //Non-static, this will record the rollno index for this particular object
    string name;
 public:
    staticdemo() {
        cout<<"NAME: ";
        getline(cin,name);
        myRollno = rollnoGlobal; // This is the step for each individual to remember its index
        rollnoGlobal++;
    }
    int getname() {
        cout<<name;
        return 0;
    }
    static int getGlobalRollnoValue() {//return the global count;
        return rollnoGlobal;
    }
    int getMyRollno() { // return the index or you call it rollno for this particular object
        return myRollno;
    }
};
int staticdemo::rollnoGlobal=10;

int main() {
  int i,n;
  cout<<"enter the number of studentd:";
  cin>>n;
  staticdemo s[n];
  for(i=0;i<n;i++)
  {
    cout<<"name:"<<s[i].getname();
    cout<<"\nroll no: "<<s[i].getMyrollno();
  }
  system("pause");
  return 0;
}

如果我是正确的,你面临的问题更像是对C ++类中的静态成员变量和方法的理解。这个例子你需要两件事:

  1. 每个变量的唯一索引,由原始的rollno静态成员完成。
  2. 每个staticdemo对象必须存储其唯一索引。这是你错过的一步。全球计数增加后,每个人都增加了,因为它是静态的。如果您需要为每个人存储它,则需要另一个非静态成员。
  3. 附注:

    STACK是一个非常具体的编程概念,正如其他人所指出的那样,你的问题显然不需要堆栈。您可以尝试google编程中的堆栈。