1.面向过程的程序设计中,程序是由函数作为模块组成的。而在面向对象的程序设计中,程序是由类的实例—对象构成的。在面向过程的程序设计中,函数是将逻辑上相关的语句与数据封装,它的最大特点是在程序设计中数据和操作分离;而在面向对象的程序设计中对象将函数与数据封装,其最大特点是在程序设计中数据和操作作为一个整体来处理。P2
2.面向对象程序设计是从所要处理的数据入手,而结构化程序设计是从系统的功能入手。P2
3.类是对一组相同特征对象的抽象描述。对象为类的一个实例。P6 4.面向对象编程方法的基本特征:抽象、继承、封装、多态性。P8
5.新类继承了原始类的特性,新类称为原始类的派生类或子类,而原始类称为新类的基类或父类。派生类可以从它的基类那里继承类特性和方法,继承性很好地解决了软件的可重用性问题。P8
6.封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,外界可以访问共有数据及公有成员函数,而不能访问类中的私有数据及保护数据,而成员函数可以访问类的私有数据、保护数据及公有数据。(private——私有,protected——保护,public——公有)。
7.在类体中不允许对所定义的数据成员进行初始化,C++规定,只有在类对象定义之后后给数据成员赋初值。(有可能出条错题) 8.构造函数的特点:
1)构造函数是一种特殊的成员函数,该函数的名字必须与类名相同,函数体可以写在类体内,也可以写在类体外。 2)构造函数的功能是给对象初始化。
3)构造函数不允许有返回值,也不允许定义构造函数的返回值类型,其中包括void类型,它有隐含的返回值,改值由系统内部使用。 4)程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数即构造函数可以有一个或多个。
9.析构函数的特点:
1)析构函数的名字与其类名称相同,并在名称的前面加上 “~”符号。 2)析构函数不指定数据类型,包括void,并且也没有参数。 3)析构函数是成员函数。函数体可以写在类体内或类外。 4)一个类只可以定义一个析构函数。
5)析构函数被系统自动调用,当被定义在一个函数体内的对象,当这个函数结束时,该对象的析构函数被自动调用。
60如果一个对象是使用new运算符被动态创建的,则用delete运算符释放它时,delete会自动调用析构函数。
10.友元函数的特点:
1)友元函数的特殊性:友元函数拥有访问类的私有数据成员的权力,普通性在于它是一个普通的函数,除了上述的特殊性以外,与其他函数没有任何不同。
2)友元函数在声明时,前面加上关键字friend,但是破坏了数据的封装性和隐蔽性, 友元函数不是成员函数。 例: friend 类型 函数名()
11.构造函数、析构函数、拷贝初始化构造函数 都是类的成员函数,友元函数不是成员函数。
12.构造函数是在(创建对象)时被执行。
13.下列的各类函数中(友元函数)不是类的成员函数 14. 类对象对成员的引用方法:对象名.成员名 对象名.成员函数名(参数表)P51
15.C++中的注释分两种:C语言中经常使用的以“/*”开始,以“*/”结束的注释形式,一般用于多行的注释,以“//”开始的单行注释形式,/* code */ 多行注释。P23
16.C++ 中的输入输出:
cin 为键盘输入类的系统默认对象,cout< cout 为屏幕输出类的系统默认对象,cin>>x;表示从输入流cin中提取X的值。P24 17.默认函数参数:一个函数可以有多个默认参数,但是,所有的默认参数必须列在参数表的最后。即只能从右往左缺省。 例: int f1(int x, int y=0, int z = 0) ; //正确,z为默认参数 int f1(int x, int y=0, int z ) ; //错误, z不能成为默认参数 18.引用和普通变量区别:引用主要用来向函数传递参数,以及从函数中返回值。引用指对变量或对象取一个别名,也就是说引用和原变量共用一个地址,把某个变量的地址看作是该变量的别名。当初始化一个引用时就将它和一个变量联系起来,这个引用将一直与变量相联系,以后就不能将它改变为其他变量的引用。P30 19.引用参数:类型 &引用名=变量名 例:int &x = num; 20.与其他数据类型不同的是类的定义中不仅可以有数据,即数据成员,还可以有对数据进行操作的函数,即类的函数成员。因此,类是一种用户所定义的数据类型,类是相关联的数据项以及对这些数据项操作的集合。 21. 什么是对象?什么是类?类与对象的关系是什么? 对象:一般认为对象是现实世界中的一个实际存在的事物,它可以是有形的也可以是无形的,对象具有自己的静态特征与动态特征。 类:是对一组相同特征对象的抽象描述。在面向对象的方法中,类是具有相同操作功能和相同的数据格式或属性的对象的集合,它是针对某一类对象的特性描述,也就是说运用抽象的方式描述这类对象。类为对象集合的抽象,它规定了这些对象的公共属性和方法,对象为类的一个实例。 关系:对象为类的一个实例。 22. 使用友元函数或友元类的成员函数可以访问类的私有成员P76 23. P91隐含this指针的例子。 I=x; //与this->i=x;一样 24. C++中的运算符除了少数几个(类属关系运算符“.”、作用域分辨符“::”、成员指针运算符“*”、sizeof运算符和三目运算符“?:”)之外,全部可以重载,而且只能重载C++中已有的运算符,不能臆造新的运算符。 25. 1)重载的运算符要保持原运算符的意义。如原先单目的运算符只能重载为单目的,不能重载为双目运算符。2)只能对已有的运算符重载,不能增加新的运算符。3)输入运算符“>>”和输出运算符“<<”必须重载为友元函数,因输入运算符和输出运算符重载时,无法重载在系统的流库内,因此只能重载为友元函数。 26. 运算符号 new 和 delete New 申请一块新的内存空间,并传回分配空间的指针。 Delete 释放由new申请的空间 动态分配用new,动态删除或释放由new申请的空间用delete 例: int *p; p= new int(6); delete p; 27.类的定义: class 类名 { private: 私有数据及成员函数; protected: 保护数据及成员函数; public: 公有数据及成员函数; } 例:class Human { private: int h; char sex[3]; int age; public: void CanSay(); void CanWalk(); Void Show(); } 关键字public,private和protected被称为访问权限修饰符或访问控制修饰符。它们在类体内与出现的先后顺序无关,并且允许多次出现,用它们来说明类成员的访关权限。在一个类中若没有特别说明,则其类的数据成员和成员函数均为私有数据。(公有、私有与顺序无关,数据是私有,函数是公有的) 28. 描述一个圆柱类,成员中私有数据半径r及高h,初始化此类的一个对象, 编写一个main函数测试。P101 代码:(未经测试的代码) class Cylindrical { private: float r, h; public: Cylindrical(int x, int y); void print(); }; Cylindrical:: Cylindrical(float x, float y) { r = x; h = y; }