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();
}