Boolan_C++_Big Three

str3(str1) , 拷贝 构造。

str3 = str1 , 拷贝 赋值。编译器, 默认提供。

类里面 带指针,

编译器 提供的 默认拷贝 构造, 直接 拷贝 指针。
所以, 一定要 重写。

String 类, 有 指针,

有一个 动态 分配的 过程。


String( const char* cstr = 0 );
// 构造函数

String( const String& str );
// 构造函数 , 拷贝 构造。
copy ctor

String& operator = ( const String& str );
// 操作符 重载, 拷贝 赋值。
copy op=
(
检测 自我 继承,( self assignment )

正确性 + 效率

提高 效率, 更重要的是 , ( 不写, 结果 可能会 出错。 )

)

~String();

// 析构函数

析构 函数 调用,
当对象 离开 他的 作用域。


// 要在 里面 清理, delete, 因为 动态 分配。

一个 字符串 多长, 的 计算方法:

我不知道 多长, 但是 最后面 有一个 结束 符号, '\0' .
C , C++

后面 没有 结束 符号, 前面 多一个 length.

Pascal

object_Class_A = object_Class_B ;
// 有 别名 效果, alias

浅拷贝: 指针 拷贝。
深拷贝 : 值拷贝。

Stack, 栈,是存在于 某作用域 scope 的 ,

一块 内存空间 memory space .

在函数 本体 function body 内,
声明的 任何变量。

auto object, 因为 他会被 自动 清理。

static 静态,

static local object 的 生命期。

Heap, 堆,

system heap ,
是 由 操作系统 提供的 一块 global 内存空间,
程序 可动态分配 dynamic allocated ,
从中 获得 若干 区块 blocks .

new 出来的 对象。

注意, 内存泄漏。

指针释放了, 指针 指向的 空间 还在。

Global Objects
全局对象

任何 大括号 之外的
对象。

谁 调用 这个 函数,

那个 谁, 就是 this .

你可能感兴趣的:(Boolan_C++_Big Three)