1、什么是类?什么是对象?什么是面向对象程序设计? 答:类:是指具有相同的属性和操作方法,并遵守相同规则的对象的集合。 对象:是包含现实世界物体特征的抽象实体,每个对象有内部的属性和操作方法。 面向对象程序设计:它吸取了面向过程程序设计的优点,同时又考虑了现实世界和计算机处理的关系,它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,对象通过响应消息来实现程序的功能。 2、类和结构有什么异同? 答:结构是类的一种特例,在结构体中也可以定义成员函数、构造函数 #include
class Date { private: int year; int month; int day; public: 和析构函数,成员也可使用private、protected、public。结构和类的区别是:在缺省情况下,结构中的所有成员都是公有的,而在类中是私有的。 3、面向过程的程序设计和面向对象的程序设计的主要区别是什么? 答:面向过程的程序设计:以功能为中心,采用函数来描述,函数和操作的数据是分离的。程序由一系列的函数构成,程序的实现通过函数的顺序执行来实现。编程时需要清楚程序实现的每一步细节。 面向对象的程序设计:它吸取了面向过程的程序设计的优点,同时又考虑了现实世界和计算机处理的关系,它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,对象通过响应消息来实现程序的功能。编程时可以不知道对象的内部实现细节。 4、面向对象的程序设计它的几个特征是什么? 简述各种特征的含义. 答:它有四个基本的特征,即抽象、封装、继承和多态性。 抽象就是忽略一个问题中与当前目标无关的那些方面,以便将注意力放在与当前目标有关的方面。 封装是面向对象程序设计的一个主要特征之一,是对象和类的主要特性。封装有两层含义,一是将抽象得到的数据成员和代码相结合,形成一个有机的数据。二是对象可以拥有私有成员,将内部细节隐藏起来的一种能力。保证了类具有较好的性,类是封装的基本工具。 继承是指一个新类可以从现有的类派生而来。 多态性是指允许不同类的对象同一消息作出的响应不相同。 5、什么是封装?什么是多态性?C++中,多态性是如何实现的? 答:封装:是指将抽象得到的数据成员和代码相结合,形成一个有机的整体,并且将它们的细节隐藏起来的一种方法。 多态性是指:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。 C++中,多态性是通过指针和虚函数来实现的。 6、编译时的多态性和运行时的多态性在实现方法上有何不同? 答:编译多态性也称静态多态性,它是通过函数重载和运算符重载实现的。 运行多态性也称动态多态性,它是通过继承和虚函数来实现的。 什么是友元函数?简述使用友元函数的优点和缺点。 答:在一个类中,用friend声明的非本类函数就是友元函数.友元函数的优点:不需要修改类的成员函数而可以访问类的私有成员,并且提高了执行效率。 缺点:破坏了类的封装性及信息隐蔽性。 8、函数重载的主要作用是什么?函数重载时参数个数不同时,能否有缺省参数,为什么?调用不同的重载函数是在编译时决定还是在运行时决定? 答:函数重载主要作用是:用同一个函数名可以去调用不同参数或功能的函数,即用同一个函数实现不同的操作。 函数重载时参数个数不同时,不能有缺省参数。因为:有缺省参数时,就会发生二义性,编译出错。 调用不同的重载函数是在编译时决定的。 9、c++中,什么是函数重载?什么是运算符重载?什么是构造函数?什么是析构函数? 答:函数重载:函数的名称相同,参数的个数或类型不同的函数。 运算符重载:对运算符赋予新的含义,使之一名多用(主要是指运算对象包含类对象)。 构造函数:构造函数的名字必须与类名同名,它不具有任何类型,不返回任何值,主要用于对象初始化。 析构函数:函数名与类名相同,只是在前边加“~”符号,它不具有任何类型,不返回任何值,主要用于对象撤销后的清理工作。 10、构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数? 答:构造函数的作用:用于新建对象的初始化工作。 析构函数的作用:用于在撤销对象前,完成一些清理工作,比如:释放内存等。 每当创建对象时,需要添加初始化代码时,则需要定义自己的构造函数;而对象撤销时,需要自己添加清理工作的代码时,则需要定义自己的析构函数。 11、什么是简单继承?什么是多重继承?如果不想再往下继承的类的功能可以采用什么样的继承方式? 在软件开发过程中,继承有什么好处? 答:简单继承:派生类的基类只有一个的继承方法。 多重继承:派生类的基类同时有多个时的继承方法。 继承的好处:由于可以利用已有的软件基础来进行新的软件开发,所以能提高软件开发效率和软件质量。 可以采用私有继承方式来隐藏基类的属性。 12、什么是内置函数?它的主要作用是什么?如何声明内置函数? 答;嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 它的作用:提高程序的执行效率。 声明内置函数:只需在函数首行的左端加一个关键字inline即可。 构造函数的调用顺序总是如下: 1.基类构造函数。如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序,而不是它们在成员初始化表中的顺序。 2.成员类对象构造函数。如果有多个成员类对象则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。 3.派生类构造函数。析构函数 析构函数的调用顺序与构造函数的调用顺序正好相反,将上面3个点反过来用就可以了,首先调用派生类的析构函数;其次再调用成员类对象的析构函数;最后调用基类的析构函数。 析构函数在下边3种情况时被调用: 1.对象生命周期结束,被销毁时(一般类成员的指针变量与引用都i不自动调用析构函数); 2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时; 3.对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。 Date (int y=1,int m=1,int d=1): month(m),day(d),year(y) {} Date (Date &d) { month=d.month; day=d.day; year=d.year;} ~Date(void) {} void Display(void) const { cout<