C++ Smart Pointer

原始指针

要想了解智能指针,就需要首先了解原始指针的痛点,原始指针有几点问题

Lvalues and Rvalues

说明: 本文探讨的是 C++11 以来的值类别

基本理解

关于左值和右值,在不对其进行详细的划分时,简单的分类方法包括

C++ Type Conversion

普通类型

类类型

对于类类型,编译器只能自动执行一步隐式类型转换.例如从字符串字面值转换为string类型,但是无法继续将string隐式转换为其他类型

Comparison of C++ Object Initialization Method

在了解创建对象的方式之前,首先了解一下初始化赋值两个操作,

  1. 初始化是创建变量时赋予其一个初始值,即初始化之前并不存在变量
  2. 赋值是把对象的当前值擦除,用新值代替旧值,即赋值之前存在变量

让人困惑的是=既可以用于初始化,也可以用于赋值,不要认为初始化和赋值是相同的操作(对于内置类型看不出这一区别,但是对于类的对象而言,这涉及的就是 = 到底使用的是拷贝构造函数还是拷贝赋值运算符了)

0%