类成员之对象指针成员

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上述代码:

饺子馅类的构造函数
饺子类的构造函数
猪肉大葱
饺子馅的析构函数
饺子类的析构函数

results matching ""

    No results matching ""