两个类相互调用的例子

本文介绍了一段C++代码中类继承与静态成员的使用方法,通过实例展示了如何在子类中访问并操作静态成员,以及静态成员函数的作用。此示例有助于理解C++中类之间的关系和静态成员的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.h

class B;
class A;

class A
{
public:
	//构造函数
	A(){x=123;}

	//析构函数
	~A(){};

	//功能函数
public:
	void ATest(void) {printf("%d\n",x);}

	void Set(B* b){m_b=b;}


	//静态函数
public:
	static B* GetInstance(){return m_b;}
	//静态变量
protected:
	static B * m_b;

   //私有变量
private:
	int    x;

};

class B
{
public:
	//构造函数
	B(){y=456;}
	//析构函数
	~B(){};

	//功能函数
public:
	void BTest(void) {printf("%d\n",y);}

	void Set(A* a){m_a=a;}

	//静态函数
public:
	static A* GetInstance(){return m_a;}
	//静态变量
protected:
	static A * m_a;

    //私有变量
private:
	int  y;
};


 

 

main.cpp

#include <stdio.h>
#include <windows.h>
#include <assert.h>
#include "main.h"

B* A::m_b=NULL;
A* B::m_a=NULL;

int main (void)
{
	A a1;
	B b1;
	a1.Set(&b1);
	b1.Set(&a1);

	a1.GetInstance()->BTest();
	b1.GetInstance()->ATest();
	
	getchar();
	return 0;
}



 

### Java 之间相互调用的示例代码 在 Java 中,之间相互调用可以通过多种方式实现。以下是两种常见的方法: #### 方法一:通过实例化对象进行调用 在这种情况下,一个需要创建另一个的对象来访问其成员变量或方法。 ```java // 定义第一个 Son import static java.lang.System.out; public class Son { public void isSon() { out.println("这是 Son 中的 isSon 成员方法"); } } // 定义第二个 Daughter import static java.lang.System.out; public class Daughter { public void isDaughter() { out.println("这是 Daughter 中的 isDaughter 成员方法"); } // 在 Daughter 调用 Son 的方法 public void callSonMethod() { Son son = new Son(); // 实例化 Son son.isSon(); // 调用 Son 的方法 } } // 主 Main 进行测试 public class Main { public static void main(String[] args) { Daughter daughter = new Daughter(); // 实例化 Daughter daughter.callSonMethod(); // 调用 Daughter 中的方法,间接调用了 Son 的方法 daughter.isDaughter(); // 调用 Daughter 自己的方法 } } ``` 程序运行结果如下: ``` 这是 Son 中的 isSon 成员方法 这是 Daughter 中的 isDaughter 成员方法 ``` 此示例展示了如何在一个中实例化并调用另一个的方法[^1]。 --- #### 方法二:通过静态方法直接调用 如果某些方法不需要依赖于具体的对象状态,则可以将其声明为 `static` 静态方法。这样可以直接通过调用来简化操作。 ```java // 定义第一个 Son import static java.lang.System.out; public class Son { public static void isSonStatic() { out.println("这是 Son 中的静态方法 isSonStatic"); } } // 定义第二个 Daughter import static java.lang.System.out; public class Daughter { public static void isDaughterStatic() { out.println("这是 Daughter 中的静态方法 isDaughterStatic"); // 直接通过调用 Son 的静态方法 Son.isSonStatic(); } } // 主 Main 进行测试 public class Main { public static void main(String[] args) { Daughter.isDaughterStatic(); // 调用 Daughter 的静态方法 } } ``` 程序运行结果如下: ``` 这是 Daughter 中的静态方法 isDaughterStatic 这是 Son 中的静态方法 isSonStatic ``` 在此示例中,两个都提供了静态方法,并且可以在不实例化的情况下互相调用[^2]。 --- ### 总结 以上两种方法分别适用于不同的场景。当需要维护对象的状态时,通常采用 **实例化对象的方式** 来调用其他的方法;而当方法逻辑独立于具体对象时,可以选择使用 **静态方法** 提高效率和简洁性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值