原型模式(深入了解c++对象拷贝机制)

发布时间 2023-09-22 21:58:44作者: 游客0721

c++对象拷贝机制

假设有一个类对象class,使用 A a; A* a = new A();一个分配在栈,一个分配在堆,更深的解释呢?

自动资源

  • 会被自动回收的资源,在一个函数内手动声明的变量会在函数结束时被释放,局部变量都是自动资源,有自己的作用域(生命周期)
void fun(){
   int a = 10;//局部变量
}

手动资源

  • 使用new手动分配,使用delete手动回收,在一个函数创建一个指针。new分配一个指定大小的手动资源分配给一个指针b指向。指针b是一个指针常量,是自动资源,相当于失去了对手动资源的索引,叫做野内存
void fun(){
 int *b = new int();
}

举例说明
image

  • a和b是两块不同的内存,b将其内存中的数据拷贝给a
  • a和b是指向两块不同内存的地址,这里是b指向的地址赋值给a,两个指针同时指向b指向的地址,a成为了野内存
  • c++ 创建对象的两种方式是c++区别其他语言的一大特色

深拷贝和浅拷贝

~未完待续