如何定义类数组 c++

构造函数有多个参数
如果只有有参数的构造函数是不是就不能构造对象数组?

1:对象数组的定义:类名 数组名[元素个数]

Eg: student asa[10];//有10个元素的学生类对象数组

2:对象数组的访问形式:数组名[下标].成员名;

Eg: asa[j].print();

3:对象数组的初始化:对象数组的初始化通常也是由构造函数来完成的。

扩展资料

类所表示的一组对象十分相似,可以作为模板来有效的创建对象,利用类可以产生很多的对象类所代表的事物或者概念都是抽象的。

在存取Private类型数据或者函数的时候,只有类本身声明的函数才是被允许的。类在与外部连接时,利用的就是Public共有类型函数,任何外部函数的访问都是运行的。

对象主要是对客观事物的某个实体进行描述,它作为一个单位,共同组成了系统,它的组成是一组属性和一组服务,这组服务操作于这组属性。

属性和服务是对象构成众多要素中的两种,属性的实质是一个数据项,主要是对对象静态特性进行描述,服务的实质是一个操作序列,主要是对对象动态特征进行描述。

参考资料来源:百度百科—C++

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-04

对象数组的定义:类名 数组名[元素个数]

Eg: student asa[10];//有10个元素的学生类对象数组

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。

扩展资料:

初始化

a.在函数体内定义的内置数组,其元素没有初始化

b.在函数体外定义的内置数组,其元素初始化为零

c.对于类类型,不管数组在哪定义,都调用该类的默认构造函数进行初始化,若该类没有默认构造函数,则需显式初始化。

int a[5]={0,1,2}; //a[]={0,1,2,0,0}

string str[5]={"hi","hi"}; //str[]={"hi","hi","","",""};

char cal[] = {'C','+','+'}; //size=3

char cal[] = {'C','+','+',''}; //size=4

char cal[] = "C++"; //size=4

char cal[3] = "C++"; //error

注意:不能象vector一样,用数组给另一数组直接初始化,或者直接赋值

char a[3] = {'C','+','+'};

char b[3];

a=b; //error;

//////////////////////////////

char a[3] = {'C','+','+'};

char b[](a); //error

本回答被网友采纳
第2个回答  推荐于2017-11-28
应当叫对象数组,不叫类数组

首先构造函数必须要有无参构造函数

定以后对象数组后再调用初始化函数,初始化各对象

class abc{
//私有成员
public:
abc(){};
//其他函数
void init(int a,int b){
//初始化
};
}

int main()
{
abc a[10];
abc *b;
for(int i=0;i<10;i++){
a[i].init(i,1);
}
b=new abc[20];
for(int i=0;i<20;i++){
b[i].init(i,2);
}
//其他过程
}
只有有参构造函数,不能声明对象数组。必须有无参构造函数
即申明对象数组时,不能使用有参构造函数,初始化数据的传递
需要另外对每个数组元素单个调用初始化函数。这样也有好处每
个数组元素都可以有自己的初始化参数。

可以把有参构造函数完成的功能分开成不需要参数的部分和需要参数的部分
不需要参数的部分,写成无参构造函数,需要参数的部分写成初始化函数,
或者干脆无参构造函数写成空函数,什么都不干,把所有的任务交给初始化函数完成。本回答被提问者采纳
第3个回答  2010-07-19
对象数组的初始化函数可以有多个,函数名与对象名相同,属性应为public。不同的初始化函数以参数的数量、类型来区分,调用时应注意,避免使用模棱两可的参数导致调用时产生混乱。
如:初始化函数有两个,第一个的参数为(double a, int b),第二个函数的参数为(int a,double b)。调用时赋与的参数是(3,4),这样便会导致混乱,不知调用哪个初始函数了。