类的前向声明与调用

原创 2015年07月09日 22:06:13

类的声明与变量的声明类似,如:

int a;    // 定义一个变量或声明一个变量
class A;  // 声明一个类,类名为A

注:声明一个类的时候,不占用任何存储空间(不知正确与否,看到网上好多人这么说。用sizeof试验时,sizeof(A)是不能通过编译的)。


下面通过实例来进行说明类的前向声明与调用问题:

#include<iostream>
using namespace std;

class A1;  // 声明类,类名为A1
class A2;  // 声明类,类名为A2

class A
{
public:
	double funA(double x)
	{
		cout<<"funA of class A called."<<endl;
		return x*x;
	}
	double funB(double x)
	{
		A1 *q;
		return q->funA(4); // 此处引用是非法的,因为在调用A1类的funA函数之前,
						   // 没有定义该函数,所以会报错
	}
	void funAA();	
	A1 *p;
//	A1 aa;  // 只能是指向这个类型的指针或引用
			// 此处定义一个A1类的aa对象的时候,就需要调用构造函数,
			// 而此时,A1类还是一个不完整的类(没有构造函数),所以会报错
};

class A1
{
public:
	double funA(double x)
	{
		cout<<"funA1 of class A called."<<endl;
		return 4*x*x;
	}	
};

void A::funAA()
{
	cout<<p->funA(4)<<endl;  // 因为前面定义了类A1,而且定义了funA函数,
							 // 所以此处p->funA()是合法的
}

void main()
{
	A obja;
	obja.funAA();
//	cout<<"sizeof(A2) is "<<sizeof(A2)<<endl;  // 编译不能通过,错误提示:使用了未定义类型“A2”
}

总之一句话:不管是变量还是函数,调用之前都需要定义!!!


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

类的声明调用及实现

  • 2011年12月16日 10:18
  • 382B
  • 下载

OCDay01 输入输出与子函数的声明调用 类与对象的简单定义 修饰符 important

求余只能整数与整数 NSLog(@“ “); 控制打印语句,printf的增强版,自动换行,精确到毫秒的日期和时间,target的名称,进程号:线程号,多了个@ .m文件用来实现 .h...

使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN):

使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN): public object InvokeMember(    str...

调用函数前未声明会出现什么情况?

查看关于c编程的书籍可以知道,在函数调用之前,要求先声明,这是为了告诉编译器函数返回值的类型,函数接受的参数的类型和个数。而如果函数在调用之前已经定义好了,即编译器知道函数的返回值类型,函数接受什么样...

虚基类声明,初始化及调用顺序

1.如果虚基类中定义有带参数的构造函数,并且没有默认定义构造函数,则整个继承结构中,所有直接或间接的派生类必须在构造函数的成员初始化列表中列出虚基类构造函数的调用。 2.建立对象时,如果这个对象中含...

构造器中可要调用本类的方法,但要调用的非static方法必须声明为private或final

在Java程序中,我们是可以在构造方法中调用本类的方法和成员变量的,但是要注意一点,当我们需要调用一个非static的方法时,该方法不应该可以被子类覆盖,应该用final修饰或将其变成private,...

关于类的前向声明

前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。 比如class foo; 声明一个foo类,这个声明,有时候也叫做前向声明(forward dec...

【Objective-C】类的属性、@property参数、前向声明

一、类 1. 类的实例方法:(类的成员变量用于保存每个对象的状态,而类的实例方法则用于向外界提供各种功能、或者执行某个动作)     1.1 选择器:        方法的声明部分就是方法的全名,...

C++12.1.4 类的前向声明、不完全类型类

简介 在一个给定的源文件中,一个类只能被定义一次,如果在多个文件中定义一个类,那么每个文件中的定义必须是完全相同的 将类定义放在头文件中,可以保证在每个使用类的文件中以同样的方式定义类。使用头文件保护...

(转)两个类相互包含引用的问题--类前向声明

在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型class A{    int i;    B b;}class B{  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类的前向声明与调用
举报原因:
原因补充:

(最多只允许输入30个字)