类成员之对象指针成员
stuffing.hpp
#ifndef STUFFING_CPP
#define STUFFING_CPP
#include <iostream> //因为这里用到了std,所以要引入iostream
class Stuffing
{
public:
Stuffing(std::string name);
~Stuffing();
public:
std::string name;
};
#endif
stuffing.cpp
#include "stuffing.hpp"
Stuffing::Stuffing(std::string name)
:name(name)//初始化列表的方式
{
std::cout<<"饺子馅类的构造函数"<<std::endl;
}
Stuffing::~Stuffing()
{
std::cout<<"饺子馅的析构函数"<<std::endl;
}
Dumpling.hpp
#ifndef DUMPLING_HPP
#define DUMPLING_HPP
#include <stdio.h>
#include "stuffing.hpp"
class Dumpling
{
public:
Dumpling(const char* name);
~Dumpling();
std::string getStuffingName();
private:
Stuffing* stuffing;
};
#endif
Dumpling.cpp
#include "Dumpling.hpp"
Dumpling::Dumpling(const char* name)
{
stuffing = new Stuffing(name); //使用了new,意味着我们分配了内存,需回收这块内存
std::cout<<"饺子类的构造函数"<<std::endl;
}
Dumpling::~Dumpling()
{
if (stuffing)
delete stuffing;
stuffing = NULL;
std::cout<<"饺子类的析构函数"<<std::endl;
}
std::string Dumpling::getStuffingName()
{
return stuffing->name;
}
main.cpp
#include <iostream>
#include "Dumpling.hpp"
int main(int argc, char const *argv[])
{
Dumpling dumpling("猪肉大葱");
std::cout<<dumpling.getStuffingName()<<std::endl;
return 0;
}
run上述代码:
饺子馅类的构造函数
饺子类的构造函数
猪肉大葱
饺子馅的析构函数
饺子类的析构函数