我正在学习c++,我正在尝试不同的scenarios.So,我想做一个简单的复制一个类,所以这就是我想到的:
#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();
}为此,我得到了以下结果:
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你们能帮帮我吗?
谢谢
发布于 2020-06-26 20:13:38
这两个对象仍然是不同和截然不同的,并且将拥有各自的成员变量实例,每个实例都存储在不同的位置。
你用浅层拷贝所做的基本上等同于这样的事情:
int a = 10;
int b = a; // Shallow copy of aa和b这两个变量仍然是两个不同的变量,即使a的值已经复制到b中。它是被复制的值。
https://stackoverflow.com/questions/62594451
复制相似问题