智能指针雏形
Day7-1 智能指针雏形:独占语义与共享语义
1. 独占语义与共享语义
在 C++ 中,拷贝构造的语义可以分为独占语义和共享语义。
- 独占语义(Unique Ownership):每个对象拥有一块独立的内存,拷贝时进行深拷贝。
- 共享语义(Shared Ownership):多个对象共享同一块内存,拷贝时进行浅拷贝,通常需要引用计数来管理资源。
C++ 标准库提供了 std::unique_ptr
和 std::shared_ptr
来实现这两种语义。
1.1 Circle 类:示例类
Circle
类是一个普通的对象类,包含构造函数、析构函数、成员变量和方法。
// Circle.h
#pragma once
#include <iostream>
#include <cmath>
using namespace std;
//关键字
//const
const int global_a = 10;
//static
static int s_b = 10;
//extern
extern int SIZE = 10;
//三者的用途:const 修饰常量,static 修饰全局变量,extern 修饰外部变量
class Circle
{
public:
Circle(double r = 0)
: _r(r)
{
cout << "Circle(double r = 0)" << endl;
}
Circle(double r, char* name)
: _r(0), _name(new char[strlen(name) + 1])
{
strcpy_s(_name, strlen(name) + 1, name);
cout << "Circle(double r, char* name)" << endl;
}
~Circle()
{
cout << "~Circle()" << endl;
delete[] _name;
}
double getRadius()<