首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与浅拷贝构造函数和深拷贝构造函数混淆

与浅拷贝构造函数和深拷贝构造函数混淆
EN

Stack Overflow用户
提问于 2020-06-26 20:09:42
回答 1查看 143关注 0票数 0

我正在学习c++,我正在尝试不同的scenarios.So,我想做一个简单的复制一个类,所以这就是我想到的:

代码语言:javascript
复制
#include <iostream>

class not_dynamic
{
private:
    int data;
public:
    not_dynamic(int temp_data = 200)                            //constructor
        :data(temp_data)
    {
        std::cout << "constructor initialized" << std::endl;
    }

    not_dynamic(const not_dynamic& source)
        :data(source.data)
    {
        std::cout << "copy constructor initialized" << std::endl;
    }
    void get_info()
    {
        std::cout << data << " " <<  &data << std::endl;
    }
};

int main()
{
    not_dynamic v{ 100 };
    v.get_info();
    not_dynamic jackie{ v };
    jackie.get_info();


}

为此,我得到了以下结果:

代码语言:javascript
复制
constructor initialized
100 00EFFBD4                    // 100 is the value in data and 00EFFBD4 is address of data
copy constructor initialized
100 00EFFBC8                    // same as above

但我记得在浅拷贝中,不同对象(两个对象是相同的)的所有相同实例应该具有相同的内存地址,但在这种情况下它是相同的。

我真的是confused.Can你们能帮帮我吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-06-26 20:13:38

这两个对象仍然是不同和截然不同的,并且将拥有各自的成员变量实例,每个实例都存储在不同的位置。

你用浅层拷贝所做的基本上等同于这样的事情:

代码语言:javascript
复制
int a = 10;
int b = a;   // Shallow copy of a

ab这两个变量仍然是两个不同的变量,即使a的值已经复制到b中。它是被复制的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62594451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档