注册 登录
编程论坛 C++教室

前向引用申明

鸿蒙之灵 发布于 2016-08-31 15:32, 2941 次点击
我想知道以下几个问题:

Student类中的    Class *cla;    是指向什么数据类型的指针,应该理解为指向Class类的实例,还是某一个数组,如果是数组,那该数组是几维数组,如何输出整个数组的内容
Class类中的      Student *stu[100];     是指向数组的吗,是几维数组,如何理解,如何输出显示,还有,它的内存分配策略是什么



在线等前辈解答



只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-8-31 15:59编辑过]

3 回复
#2
rjsp2016-08-31 16:10
Class *cla;    是指向什么数据类型的指针
------ 指向 Class 这个数据类型的指针

Student* stu[100];     是指向数组的吗
------ 不是啊,这是定义了一个数组,数组的长度为100,数组的元素类型为Student
#3
鸿蒙之灵2016-09-01 09:46
回复 2楼 rjsp
谢了啊

[此贴子已经被作者于2016-9-1 10:53编辑过]

#4
反脑控20162016-09-03 04:02
前向引用声明
类组合时可能会出现一种特殊情况,就是类A中有类B类型的内嵌对象,而类B中也有类A类型的内嵌对象,即两个类相互包含。这时就要用到前向引用声明了。
前向引用声明是在引用没有定义的类之前对该类进行声明,这只是为程序声明一个代表该类的标识符,类的具体定义可以在程序的其他地方,简单说,就是声明下这个标识符是个类,它的定义你可以在别的地方找到。
一、使用前向应用时,只能使用被声明的符号,不能涉及类的任何细节(因为此时无法定义类的数据成员)。
例如:
class A;
class B
{
    A a;//此处错误,没有完整定义A,那么就不能定义完整的对象
};
class A
{
    B b;//正确
};
二、但是可以在给出完整的类的定义前,可以定义类的引用和指针
例如:
class A;
class B
{
    A&a;//正确,前向应用声明了类A,可以使用类对象的引用了
    A*c;//正确,前向应用声明了类A,可以使用类对象的指针了
};
三、还可以声明形参为类A对象值的函数成员,此函数成员的定义必须放在类A的定义之后。
class A;  //前向引用声明
class B
{  
public:
    void g(A a);//只能声明,定义部分必须放在类A的定义之后。
};
class A
{  
public:
    void f(B b){}
};
void B::g(A a){}
1