Boolan C++第二周笔记

2018-03-26  本文已影响0人  伴读小书童q

编写一个带指针成员变量的类

1. 拷贝函数

2. Big Three

字符串的两种存储形式:最前存贮字符串的长度;最后有结束符'\0'

2.1 拷贝构造函数

大小要+1,为结束位的'\0'留出位置

2.1 拷贝赋值函数

如果没有做自我赋值检测,会出现把自己清空后再赋值,这时调用指针会出现不确定结果

3. 堆栈

void* mem = operator new( sizeof(Complex) ); //分配内存,调用malloc(sizeof()) 
pc = static_cast<Complex*>(mem);             //类型转换
pc->Complex::Complex(1,2);                   //构造函数
String::~String(ps);   //析构函数
operator delete(ps);   //释放内存,内部调用free

4. 内存中new时的真正形态

4.1 单个对象时

4.2 数组对象时

5. 类模版

template<typename T>
class complex
{
public:
  complex (T r = 0, T i = 0)
    : re (r), im (i)
  {}
private:
  T re, im;
}

6. 函数模版

template <class T>
inline 
const T& min(const T& a, const T& b)
{
  return b < a ? b : a;
}

思考

1. new type[] 和 delete [] 成对出现的原因?

2. ' * '和' & '标志符在不同位置时的不同含义

3. 回答第一周笔记中的第一个思考问题,为什么可以数据需要单独存储,而函数可以公用一份?

complex c1,c2;
cout << c1.real(); // 实际情况,cout << complex::real(&c1);
cout << c2.real(); // 实际情况,cout << complex::real(&c2);

4. 为什么静态函数只能使用静态数据,而不能使用直接使用类的私有数据?

5. 类模版和函数模版的使用区别

上一篇 下一篇

猜你喜欢

热点阅读