c++简答题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是面向对象技术?面向对象与面向过程程序设计有什么不同?
面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。
面向过程比面向对象要出现的早,面向过程的象c语言主要对程序的执行过程的编写,面向对象象java语言主要是对类的编写和应用两者是有本质的区别的。
2.如何理解面向对象技术中的封装性、继承和多态性?
封装:是指将数据和代码捆绑在一起,从而避免外界的干扰和不确定性。
继承:特殊类的对象拥有其一般类的全部属性和行为,称为特殊类对一般类的继承。
多态性:对一个对象发出消息时,对于相同的消息,不同的对象具有不同的反应能力。这样,一个消息可以产生不同的响应效果,这种现象称为多态性。
3.简述构造函数,析构函数和拷贝函数的特点与用途。
A、构造函数特点:函数名和类名相同;公有访问属性;无函数返回类型;对象被创建之后自动调用;可以重载;可在类内或类外定义
构造函数作用:初始化对象
B、析构函数特点:名字特别加~;没有参数;不能重载;对象生存期时,系统自动调用;
析构函数作用:在对象生存期结束之后自动执行清理工作
C、拷贝构造函数特点:与类同名;没有返回类型;只有一个为该类对象的引用作为参数;
作用:实现对象之间的初始化
4.面向对象中const有什么用途?
可以实现同一个数据对象的不同场合不同途径的共享,同时防止错误操作对数据的更改。
5.简述c++中的this指针的特点。
指向本类对象,其值时当前被调用的成员函数所在的对象的起始地址,编译系统自动实现。
6.简述静态数据成员和静态函数成员的特点和用途。
静态数据成员特点:
每个类中只有一个拷贝,可以实现同一类不同对象之间实现数据共享(static int number);生存期同程序周期一样长;
初始化不加访问限定符且前面不加(static),例如int CStudent:: TotleNumber=120; 静态成员函数:(例如:static int set_totle_len(); )
属于类的静态成员,但都不是对象成员;公有静态成员函数可以通过类名或者对象名来调用,一半的非态成员函数只能通过对象名来调用;静态成员函数可以直接访问该类的静态成员,不能直接访问非静态数据成员和非静态成员函数;若要,可通过对象来引用。
7.友元函数、友元类的特点和用途是什么?
友元(成员)函数特点:定义在类外部,但是需要在类体内进行说明;说明时在前面加上关键字friend
class A{public: ...friend (B::)double GetDistance(A start,A stop); .....};
友元(成员)函数作用:提高程序的运行效率,可以访问类中的保护和私有成员;友元类特点:class A{...... friend class B; ......};
友元类作用:能够允许一个类中的所有成员函数都能够访问另一个类中的私有成
员。
8.叙述继承与派生的定义。什么是单一继承?什么是多重继承?
单一继承:一个类只从一个基类派生;多重继承:一个雷从多个基类派生。
9叙述基类成员经公有继承后,在派生类中访问权限的变化。叙述基类成员经私有继承在派生类中访问权限的变化?
公有继承之后public protected权限保持不变,private变为不可访问,私有继承之后public protected均变为private,private变为不可访问。
10、用派生类定义对象时构造函数的执行过程。
调用基类的构造函数,调用顺序按照他们被继承时声明的顺序(从左到右);
调用内嵌成员的构造函数,调用顺序按照他们在类中声明的顺序;派生类的构造函数中的内容
11、运算符重载需要遵循哪些原则?
不改变运算符原有的含义
不改变运算符原有的优先级别,也不能改变运算符需要的操作数的数目
不能创建新的运算符,只能重载C++已有的
有些运算符不能重载
12、什么是多态性?在c++中如何实现多态的?
多态性是指当不同的对象收到相同的消息时产生不同的动作。包括静态联编和动态联编。静态联编是编译时的多态性,通过重载机制实现。动态联编时运行时的多态性通过继承以及虚函数来实现。
13、什么是纯虚构函数?什么是抽象类?抽象类能否定义对象实例?
纯虚函数:在声明时被初始化为0的虚函数。作用是:在基类中为其派生类保留一个函数的名字,以便在派生类根据需要对他进行定义,可以实现运行时的多态性。
抽象类:如果在一个类中至少有一个纯虚函数则这个类被称为抽象类。抽象类必须用作派生其他类的基类,不能直接创建对象实例,也不能用作函数参数类型。这是因为其中的一个多个函数并未被定义。
抽象类不能定义实例。
14抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?
抽象类指的是含有纯虚函数的类,该类不能建立对象,只能声明指针和引用,用于基础类的接口声明和运行时的多态
另外,如果抽象类的某个派生类在向继承体系的根回溯过程中,并不是所有的纯虚函数都实现了,该类也是抽象类,同样不能建立对象
15、函数模板和模板函数的关系
(1)函数模板是个模板用来生成函数。模板函数是一个函数,由函数模板生成。
(2)函数模板是由程序员用代码写出来的,模板函数时编译系统在编译时根据函数模板自动生成的。
(3)函数模板是模板的定义,是一类函数的抽象,代表了一类具有相同功能的函数,不能够实际执行。模板函数是函数模板的实例,代表具体函数,具有程序代码,占用内存空间,并可以实际执行。
16、类模板实例化特点
(1)只有在类模板实例真正使用时才进行实例化;