类定义中持有对象
Main
#include"House.h"
voidmain(){
/*House house1;
House house2;*/
House*house1=newHouse();
House*house2=newHouse();
cout<<&(house1->getDog())<<endl;
cout<<&(house2->getDog());
}
Dog类:
Dog::Dog(int_age)
{
age=_age;
}
House类:
#include"Dog.h"
classHouse
{
public:
// Dog d;
Dog*d=newDog();
House();
DoggetDog();
};
DogHouse::getDog()
{
// return d;
return*d;
}
结果均为输出地址不同。
结论:这种写法House的不同对象持有的是不同Dog对象。
持有相同对象的写法:构造注入。
voidmain(){
Dog*d=newDog(12);
House*house1=newHouse(d);
House*house2=newHouse(d);
cout<<&(house1->getDog())<<endl;
cout<<&(house2->getDog());
}
House构造器:
House::House(Dog*_d)
{
d=_d;
}
House头文件:
#include"Dog.h"
classHouse
{
public:
Dog*d=0;
House(Dog*);
House();
~House();
Dog&getDog();
};
结果:输出地址相同。