学习完C++和Java等语言许久了,但一直都是即用即学的方式,所以对其中的许多知识仍有遗漏,并且以前一直未能拜读神作C++ Primer Plus,留下了莫大遗憾。希望此次能坚持读下去。一直懒得去查天天挂在嘴边的OOP英文全称是啥(主要是第二个O),特此记录下:Object Oriented Programing.
第十章主要讲解类和对象的使用。首先说一下面向对象编程的特性:封装、继承、多态、抽象、代码可重用。(一些面试时要考的)
类包括声明和定义两部分
1.若在声明时对类的成员变量或方法未加访问控制,则默认的为private(注:此处也体现了类的封装特性,即数据隐藏)
2.在声明中直接定义的方法为内联方法。因此最好将复杂的方法的声明和定义分开来写。而一些极为简短的方法声明为内敛方法则可以提高效率。(注:可以将内联方法理解为代码的拷贝,通常的方法在被调用时在内存中只有一份代码段,通过地址寻找,然后传递不同的参数执行,而内联方法相当于在每个调用的地方拷贝了相同的代码,因此免去了地址变换等工作,提高了效率。)
3.为构造函数参数设置默认值可以直接使用无参构造函数。
4.Stack object;object=Stock();//是对object的赋值不是初始化
Stack object=Stack();//初始化
5.使用{}为对象初始化:Stack object={1,"name"};
Stack objects[5]={Stack(1,"name"),};//[1]~[4]使用无参构造函数
6.const函数 void Stock :: Show() const;
7.代码分析:
calss Bakery
{
private : const int Month=12;
double costs[Month];
//错误在于未创建对象前,不知道Month的值。改正为将Month声明为static const
}
class Bakery
{
private : enum{Month=12};
double costs[Month];
//正确
}
//enum只是一个声明,在类的对象中并不存有此enum.