栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

补基础——c++ 拷贝构造函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

补基础——c++ 拷贝构造函数

每个类除了有普通的构造函数之外,即 Staff(std::string mName,int mAge),还有拷贝构造函数,即 Staff(const Staff &staff)。如下:
Staff.hpp 文件

#include 

class Staff
{
public:
    Staff(std::string _name, int _age);
    Staff(const Staff & staff);
    ~Staff();

public:
    std::string name;
    int age;

    char * mem = nullptr;
};

Staff.cpp 文件

#include "Staff.hpp"
#include 

Staff::Staff(std::string _name, int _age)
{
    mem = (char *)malloc(20);
    name = _name;
    age = _age;
    printf("构造函数被调用n");
}

Staff::Staff(const Staff & staff)
{
    name = staff.name;
    age = staff.age;

    mem = (char *)malloc(20);
    memcpy(mem, staff.mem, 20);
}

Staff::~Staff()
{
    if(mem != nullptr){
        free(mem);
        mem = nullptr;
    }
    printf("析构函数被调用n");
}

main

#include
#include "Staff.hpp"

int main(int argc,char **argv)
{
    Staff staffA;
    Staff staffB = staffA;

    return 0;
}

staffB的创建会调用拷贝构造函数,这里在.cpp文件中已经将拷贝构造函数重写了,默认是浅拷贝,也就是说staffB和staffA的mem指针的值相同,二者指向同一块儿地址,如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号