String class:这种类的成员变量通常是指针char* m_data,用于指向某块内存。
针对指针的类,Big Three,三个特殊函数(拷贝构造,拷贝赋值和析构函数)。
拷贝构造:String(const Sting &str),通过相同的类构(new[])造自己。
拷贝赋值:String& operator=(const String& str),通过相同的类赋值给自己。
析构函数:~string(),释放(delete[])指针所指向的内存。
Big Three重点考虑了指针和内存分配的问题。
———————————————————————————————————
stack (局部动态空间)和 heap(全局的动态空间:new)
注释:new申请的内存,实际内存>理论需要的内存。需要空间记录并管理new的空间。同时还需要pad填补空位,使得class的大小是最大成员变量的空间的整数倍。
———————————————————————————————————
static:使得class共用同一变量
_______________________________________________________________
class template类模板 :complex<double>c1(2.5,1.5);complex<int>c2(2,4);
function template函数模板:r3=min(r2,r1);编译器会根据模板自动推导参数类型。
namespace 命名空间,将类,函数,变量包装在namespace中,避免命名冲突。
例如: std::类;std::函数