数组定义。。。。。。。。
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;
}