1.什么是构造函数?有哪些特点?
构造函数是类的特殊成员函数。
1) 函数名与类名相同。
2) 无函数返回类型说明。
3) 主要完成对象的初始化工作。
4) 当一个新的对象被建立时,系统自动调用其相应的构造函数。
5) 可有重载多个构造函数。
6) 若某个类定义中没有给出任一个显式的构造函数的话,则系统自动给出一个缺省的(隐式的)形式的构造函数。
2.声明友元函数的关键字是什么?简述友元函数的功能特点?
关键字是friend。作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。
在它的函数体中能够通过对象名访问私有和保护成员。
可以是一个普通的函数,也可是其他类的成员函数。
友元函数并不是类的成员函数,但可以在其函数体中通过对象名访问这个类的私有或保护成员。
3.简述派生类的继承方式有几种及各自的实现继承的特点?
三种继承方式:公有继承、私有继承、保护继承。
公有继承:基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
通过派生类的对象只能访问基类的public成员。
私有继承:基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
通过派生类的对象不能直接访问基类中的任何成员。
保护继承:基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
通过派生类的对象不能直接访问基类中的任何成员。
4.简述什么是虚函数?定义虚函数的关键字及使用虚函数的目的?
在定义某一基类(或其派生类)时,若将其中的某一函数成员的属性说明为virtual,则称该函数
为虚函数。
关键字是virtual。
通过虚函数,达到了用基类指针访问派生类对象成员函数的目的,这样,只要声明了基类指针,就可以使不同的派生类对象产生不同的函数调用,实现了程序的运行时多态。
5.什么叫拷贝构造函数?拷贝构造函数何时被调用?
拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。
作用:(1)当用类的一个对象去初始化该类的另一个对象时
(2)若函数的形参为类对象,调用函数时,实参赋值给形参
(3)当函数的返回值是类对象时
6.在继承中派生类能否继承基类的构造函数?派生类的构造函数执行次序是怎么样的?
基类的构造函数不被继承,派生类中需要声明自己的构造函数。
1)调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。
2)调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。
3)派生类的构造函数体中的内容。
7.什么叫静态数据成员?它有何特点?
类的静态数据成员是累成员的一种特例,采用static关键字声明。
对于静态数据成员每一个类只有一个拷贝,由所有该类的对象共同维护和使用,实现了同一类中不同对象的数据共享。
8.简述函数重载的概念及原则?
在C++中,允许多个函数具有相同的名字,而这些函数的参数列表不同,这种函数叫做重载函数。
原则:根据参数的个数和数据类型不同,编译器根据实参和形参类型个数最佳匹配,自动确定调用哪一个参数
9.什么叫虚基类?有什么作用?
虚基类的引入:用于有共同基类的场合。
声明:以virtual修饰说明基类。
作用:主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题.
为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝
10.运算符重载的关键字是什么?简述运算符重载的规则?
关键字是operator。
1)C++中的运算符除了少数几个之外全部可以重载,而且只能重载C++中已有的运算符。
2)重载之后运算符的优先级和结合性都不会改变
3)运算符重载不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。
11.简述函数调用的过程,并画出函数调用执行过程图。
一个C++程序经过编译以后生成可执行的代码,形成后缀为.exe的文件,存放在外存储器中。当程序被启动时,首先从外存将程序代码装载到内存的代码区,然后从入口地址(main()函数的起始处)开始执行。程序在执行过程中,如果遇到了对其他函数的调用,则暂停当前函数的执行,保存下一条指令的地址(即返回地址),并保持现场,然后转到子函数的入口地址,执行子函数。当遇到return语句或者子函数结束时,则恢复先前保存的现场,并从先前保存的返回地址开始继续执行。
12.什么叫内联函数?它有哪些特点?
定义时使用关键字inline的函数为内联函数。
1.编译器在编译时。在调用处用函数体进行替换,节省了参数传递和控制转移的开销。
2. 内联函数体内不能包含任何静态变量,不能使用循环语句、switch;不能递归。
3.内联函数的定义必须出现在第一次被调用之前。如果函数返回类型为void,则不能有return 语句。
13.引用和指针有何区别何时只能使用指针而不能使用引用?
引用是一个别名,不能为 NULL 值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL 时只能使用指针。
14.构造函数和析构函数有什么作用?
    构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用。
析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也
就是专门作扫尾工作的。一般情况下,析构函数是在对象的生存期即将结束的时刻由系统自
动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。
15.什么叫静态函数成员?它有何特点?
使用static 关键字声明的函数成员叫静态数据成员。它属于整个类,同一个类所有的对象共同维护和使用,所有对象共享。
在静态函数成员中只能使用同一个类里的静态数据成员,不能使用非静态的数据成员。
16.简述类的三种访问控制方式及各自的特点?
三种访问控制方式分别为:public、private、protected。
Public:它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
Private:只允许本类中的函数访问,而类外部的任何函数都不能访问。
构造函数可以被重载Protected:与Private相似,其差别表现在继承与派生时对派生类的影响不同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。