这本书开头自我介绍是一本关于思想的书,看了几章,也体会到了作者给读者要表达的不是c++语言的技术细节,而是在c++语言的基础上面向对象的一些思考,和编程注意的问题
前三章
讲了c与c++的区别和联系,主要是说明c语言的局限性和c++的便利性
第四章
核查表,用途是帮助你回忆你可能忘掉的事情
程序员需要考虑的一些事(核查表):
·你的类需要一个构造函数么?
复杂的类需要构造函数
·你的数据成员是私有的么?
公有的数据成员不是什么好事
·你的类需要一个无参的构造函数么?
如果类有了非无参的构造函数,如果没有一个无参的构造函数,无参的初始化对象可能就会产生错误
·是不是每个构造函数初始化所有的数据成员
类会有一些的数据成员,他们只有在对象存在一会后才能有意义
·类需要析构函数么?
想一想该类是不是分配了资源,这些资源是不是由成员函数释放了。
·类需要虚析构函数吗?
在继承中父类需要一个虚析构函数来防止delete的错误,一般的,虚析构函数也是空的
·你的类需要复制构造函数么?
成员变量一般是指针的情况下,我们需要复制构造函数
·你的类需要一个赋值操作符么?
如果需要复制构造函数,一般也需要赋值操作符
·你的赋值操作能正确的将对象赋给对象本生么?
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么?
制构造函数模板 X::X(const X&)
操作符 X:operator=(const X&)
·如果函数有引用参数,他们是const引用么?
有函数想改变参数时,才不能用const声明的引用参数
·记得适当的声明成员函数为const么?
如果一个函数不修改对象,就声明为const
c++更适合那些喜欢思考的程序员