C++沉思录笔记 —— 第四章:类设计者的核查表

现在开始写类吧!

认真理解下面的每一句话,深入思考,让你的类是有思想的类。

你的类需要一个构造函数吗? —— 构造函数是用来隐藏内部工作方式的。

你的数据成员是私有的吗?

你的类需要一个无参的构造函数吗?

是不是每个构造函数初始化所有的数据成员?

类需要析构函数吗?

类需要一个虚析构函数吗?

#include <iostream>
#include <string>
using namespace std;

class B{
string s;
public:
//virtual ~B() {}
~B() { cout << "~B delete" << endl; }  //将调用这个错误的析构函数
};

class D: public B{
string t;
public:
~D() { cout << "~D delete" << endl; }
};

int main(int argc, char const *argv[])
{
B* bp = new D;
delete bp;

return 0;
}

你的类需要复制构造函数吗?

你的类需要一个赋值操作符吗?

你的赋值操作符能正确地将对象赋给对象本身吗?

class String{

public:

  String& operator=(const String& s);

private:

  char* data;

}

String& String::operator=(const String& s)

{

  if(&s != this){

    delete[] data;

    data = new char[strlen(s.data)+1];

    strcpy(data, s.data);

  }

  return *this;

}

你的类需要定义关系操作符吗?

删除数组时你记住了用delete[] 吗?

记得在复制构造函数和赋值操作符的参数类型中加上const了吗?

如果函数有引用参数,它们应该是const引用吗?

记得适当地声明成员函数为const的了吗?

posted @ 2019-10-31 22:58    阅读(118)  评论(0)    收藏  举报