C++中一个类访问另外一个类的成员变量或者成员函数

1.在一个类中定义另外一个类的成员为指针类型。并用this指针管理对象的内存,实现数据的传递。

#include <stdio.h>
class A
{
public:
	A();
	~A();
	void SetData(int year, int month, int day);
	int _year;
	int _month;
	int _day;
	static int sum;
private:
};
int A::sum = 100;//初始化静态变量,它属于类但是不属于类的对象,为所有对象所共享
A::A()
{
	sum += 8;
}
A::~A()
{
}
class B
{
public:
	B();
	~B();
	A *m_a;	
private:
};
B::B()
{
}
B::~B()
{
}
B bb;
void A::SetData(int year, int month, int day)
{
	
	_year = year;
	_month = month;
	_day = day;
	bb.m_a = this;
}
void main()
{
	A a;
	int mm=a.sum;
	a.SetData(212,321,132);

	int a1 = bb.m_a->_day;

	a.SetData(21, 32, 13);
	int a2 = bb.m_a->_day;
	A aa;

	aa.SetData(32342,34243,2424243);
	int a3 = bb.m_a->_year;
	
	getchar();
}
2.通过对象进行内存分配,从而进行管理new一个对象。
#include <stdio.h>

class Data
{
public:
	void go()
	{
		printf("Hello World!\n");
	}
	void SetData(int year, int month, int day);
public:
	int _year;
	int _month;
	int _day;
};

class A
{
public:
	A();
	~A();
	Data *m_data;
private:

};

A::A()
{
}

A::~A()
{
}
A a;
void Data::SetData(int year, int month, int day)
{
	_year = year;
	_month = month;
	_day = day;
	printf("%p\n", this);
}

void main()
{
	a.m_data->go();
	/*Data d1, d2;
	a.m_data = &d1;*/
	Data *d1 = new Data;
	a.m_data = d1;//通过地址赋值的方式进行内存访问
	d1->SetData(2016, 9, 25);
	printf("%d\n",a.m_data->_day);
	printf("%d\n", a.m_data->_month);
	printf("%d\n", a.m_data->_year);
	Data d2;
	d2.SetData(201, 988, 2588);
	a.m_data = &d2;
	printf("%d\n", a.m_data->_day);
	printf("%d\n", a.m_data->_month);
	printf("%d\n", a.m_data->_year);
	getchar();
}





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值