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的了吗?

浙公网安备 33010602011771号