c++中如何一个类批量声明多个对象

例如
class stu{};
怎么一次声明50个对象

数组定义。。。。。。。。


class stu
{
    int age;
    int id;
};
int main(void)
{
    stu obj[50];//声明50个变量类型为stu的对象
    int num=sizeof(obj)/sizeof(stu);
    for(int i=0;i<num;i++)
    {
        obj[i].age=i;//对数组某一个成员进行操作
        obj[i].id=i+1;
    }
    return 0;
}

追问

怎么用构造函数写?

追答

什么?构造函数?
我猜你是不是想让类有50个成员变量?

追问

Elevator ele[2];
for(i = 0; i < 2; i++)
ele[i] = Elevator();
例如这样
但这样写vs报错
错误1error C2582: 'operator =' function is unavailable in 'Elevator'

追答

类的构造函数不能这样用,你想实现什么功能?

追问

声明50个对象啊

追答

那么你是不可以在类外面调用类中的构造函数的,而且构造函数没有任何返回值。

class Demo
{
    Demo(){}
    Demo(int age){}
};
int main(void)
{
    Demo d1();//创建了一个Demo类的对象,使用的是不带参数的构造函数
    Demo d2(18);//使用了带参数的构造函数去构造对象。
    /*
    构造对象是不需要通过构造函数的“返回值”来获得的。
    只要类的构造函数是公有的并且你所填写的参数正确,
    那么声明一个类的对象就等同于声明一个普通的变量一样
    Demo d1;
    int i;
    */
    return 0;
}

追问

50个一个一个写?

追答

说了数组啊。。
stu obj[50];//声明50个变量类型为stu的对象

追问

怎么赋值呢,
比如说:
class stu
{
int age;
int id;
stu();

stu(int age,int id);

};
怎么使用带参数的构造函数,去声明50个对象?

追答//construction.cpp
//程序代码:
#include <IOSTREAM>
using namespace std;
class Stu
{
public:
    Stu():age(-1),id(-1),inited(false){}//初始化一下各个成员变量
    void InitObj(int age,int id)//创建对象后必须调用这个函数去初始化对象(起到类似于构造函数的功能)
    {
        this->age=age;
        this->id=id;
        inited=true;//如果初始化了,那么这个变量为真,否则在其他地方无法使用这个对象
    }
    int GetAge()
    {
        if (!inited)//判断一下对象是否初始化了,如果没有,返回错误的信息
        {
            return -2;
        }
        return age;
    }
    int GetID()
    {
        if (!inited)//判断一下对象是否初始化了,如果没有,返回错误的信息
        {
            return -1;
        }
        return id;
    }
private:
    int age,id;
    bool inited;
};
int main(void)
{
    Stu stu[20];//定义一个类型为Stu的对象数组
    const int num=sizeof(stu)/sizeof(Stu);//获取数组的成员个数
    for (int i=0,k=1;i<num;i++,k++)//初始化每一个数组的成员
    {
        stu[i].InitObj(k,i);
    }
    for (int x=0;x<num;x++)//输出数组成员的信息  
    {
        cout<<"id为:"<<stu[x].GetID()<<"的年龄是:"<<stu[x].GetAge()<<endl;
    }
    system("pause");//暂停程序
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-11
用数组应该可以吧追问

数组怎么定义?