当前位置: 代码迷 >> 综合 >> 《c++沉思录》学习笔记 day1
  详细解决方案

《c++沉思录》学习笔记 day1

热度:80   发布时间:2024-01-19 10:24:40.0

这本书开头自我介绍是一本关于思想的书,看了几章,也体会到了作者给读者要表达的不是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++更适合那些喜欢思考的程序员