永发信息网

指向类的指针问题

答案:3  悬赏:40  手机版
解决时间 2021-12-31 23:16
我的程序中有一个类class A,而在A的成员中又有类class B
如:class A
{
public:
B b;
........
}
而class B类与class A类的构造函数都是有参数的。
现在定义一个指向A的指针并开辟空间: A *a = new A[5];
程序报错,说A没有无参数的构造函数,请问怎么在开辟空间的时候给A的构造函数附上参数?
注意:仅仅声明一个A的无参数构造函数是不行的,因为B也需要参数来构造
求大神~~
最佳答案
class B
{
public:
int b;
B(){}
B(int b1){b = b1;}
};

class A
{
public:
int a;
B b;
A(){}
A(int a1, int b1):b(b1){a = a1;}
};

int main()
{
A* pa = new A[5];
return 0;
}

必须要有无参数的构造函数,A B都要有
只有有参构造函数,不能声明对象数组。必须有无参构造函数
即申明对象数组时,不能使用有参构造函数,初始化数据的传递
需要另外对每个数组元素单个调用初始化函数。这样也有好处每
个数组元素都可以有自己的初始化参数。

可以把有参构造函数完成的功能分开成不需要参数的部分和需要参数的部分
不需要参数的部分,写成无参构造函数,需要参数的部分写成初始化函数,
或者干脆无参构造函数写成空函数,什么都不干,把所有的任务交给初始化函数完成。
全部回答
假设有个 person 类,是基类,包括了人的一些基本属性和方法。。 再假设有个 student 类,派生于 person 类,新增了一个 “学号” 成员。。 person *p = new student(),指向基类的指针去指向派生类,这时可以,因为 p 是 person 的指针,所以 p 里面是没有 “学号” 这个成员的,也就无法访问 student 新增的 “学号” 成员,如果试图访问编译的时候就报错了。。 如果反过来,student *s = new person(),s 有 “学号” 成员,编译器认为访问 “学号” 这个成员是没有问题的,但是实际对象是 person,是没有这个成员的,这样的话在运行期间实际访问到哪部分的内存也就不得而知了。。这样是很危险的。。 综上所述,反之不行。。
用这个A *a=new A(5); 这是定义一个对象指针并开辟了一个空间,还传递了一个参数、 你的是[],是在定义一个对象数组,并不是给构造函数传递一个参数。 你看看是不是这个问题。、
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
伊春市乌伊岭供电营业厅位置在什么地方啊,我
跪求 おっぱいの王者48游戏加全CG存档
想减肥可以吃树莓酮吗,因为是第一次服用所
单选题Mr. Smith ____ the v
提前一个月和厂里说辞职厂里没批要辞职书不给
从连云港开车到长春要多长时间啊?有多少公里
另一个的英文怎么写
中国近代史上赔款最多的条约是《________》;
车子停了没关空调回来打不着火.
伊春市嘉荫县朝阳营业厅办公地址在什么地方?
地下交通站(mkv,720)的资源分享一下。谢谢!
西林供电局西钢营业厅办公位置在哪啊?好找么
我下载全民k歌 怎么录制不了音呢 还有录完以
浙江省专升本是不是一定要过三级
动用了“超过一个国家的战力”的美韩联合军演
推荐资讯
判断题用三条长分别是5厘米、2厘米和6厘米的
投标前的述标
乳头被添了以后为什么觉得痒
长岛县安全生产监督管理局地址在哪?我要去那
藏文阿鲁是什么意思
步步高h9怎么取出内存卡?
晚上八点左右吃的晚饭,吃的是米饭,到了十点
安阳县畜牧局办公位置在哪啊?好找么?
西峡县南阳餐餐有约川菜馆地址在哪,我要去那
餐厅设计要考虑到哪些问题
龙气测试仪,就是风水先生用来测试房屋有没有
怎样才能使小房间看起来十分宽敞
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?