C++实现不同文件的A、B类及main函数互相调用实例化

版权声明:步菲原创,转载请注明来源。 https://blog.csdn.net/u013630425/article/details/89231982

初学C++,在类实例化和调用的过程中遇到了不少麻烦,总结一下。

多个类文件互相实例化调用

预想的效果是,在test.cpp文件的main函数里面可以分别实例化A类和B类,并调用A/B类里面的函数,且在A和B类里面可以互相实例化及调用B和A类的函数。
分析上述的需求,在C/C++中如果需要调用其他文件的方法及在类里面实例化对方,那么就需要引入头文件的使用,每一个文件都有自己的.h文件,在里面声明函数或者定义的参数字段。
最终文件需要有A类,A.cpp及头文件A.h;B类,B.cpp及头文件B.h,主函数文件test.cpp。
通过引入.h头文件,在头文件里面声明类及类里面的函数,来实现效果。
下面就是具体实现代码。

在头文件里面定义class A

A.h

#ifndef _A_H_
#define _A_H_
 /*定义A类*/
class A
{
public:
	A();//无参构造函数
	A(string name);//有参构造函数
	~A();//析构函数
	string name;//字段
	void a_say(string str);
	void ab_say(string str);
private:

};

#endif/*include _A_H_*/

定义A.cpp类文件


#include "A.h"
#include "B.h"

A::A()
{
	cout <<"A 初始化"<<endl;
	A::name="A";
}
A::A(string name)
{
	cout<<"重载 "<<" A 初始化"<<endl;
	A::name=name;
}

A::~A()
{
}

void A::a_say(string str)
{
	cout<<A::name<<" say "<<str<<endl;
}
void A::ab_say(string str)
{
	B b;//在A中实例化B
	b.b_say(str);

}

定义B类

B.h


#ifndef _B_H_
#define _B_H_

/*定义B类*/
class B
{
public:
	B();
	~B();
	string name;
	void b_say(string str);
	void ba_say(string str);
private:

};

#endif/*include B.h */

B.cpp


#include "B.h"
#include "A.h"

B::B()
{
	cout<<"B 初始化 "<<endl;
	B::name="B";
}

B::~B()
{
}

void B::b_say(string str){

	cout<<B::name<<" say "<<str<<endl;
}
void B::ba_say(string str)
{
	A a;//在B中实例化A
	a.a_say(str);

}

定义main函数

#include "A.h"
#include "B.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
	A a;	 
	a.a_say("a hello");
	a.ab_say("a hello ");
	A *la=new A("李四");//指针调用,重载	 
	la->a_say("a hello");
	//实例化B
	B b;
	b.b_say("b hello");
	b.ba_say("b hello");
	getchar();
	return 0;
}

实际运行效果如下

A 初始化
A say a hello
B 初始化
B say a hello
重载  A 初始化
李四 say a hello
B 初始化
B say b hello
A 初始化
A say b hello

猜你喜欢

转载自blog.csdn.net/u013630425/article/details/89231982
今日推荐