您好,欢迎访问三七文档
1.设有基类A,基类A中有成员函数voidf(inta),还有成员函数virtualvoidf(inta)。类AA是类A的派生类。解释:派生类成员函数对基类成员函数覆盖和派生类成员函数重载基类成员函数的区别。说明:既可直接解释,也可用类A和类AA作为例子解释。答:派生类成员函数对基类成员函数的覆盖,是指若基类A中有成员函数voidf(inta),而派生类AA中也定义了同样的成员函数voidf(inta),且参数个数和参数类型均相同。派生类成员函数对基类成员函数的重载,是指若基类A中有成员函数voidf(inta),而派生类AA中也定义了成员函数f(),但或者参数个数不同,或者参数类型不同。2.说明异常抛出和处理的两种方式。说明当异常类非空时,异常类在异常处理中有什么作用?答:异常抛出和处理的两种方式是:异常的抛出和处理在同一个函数中;异常的抛出和处理不在同一个函数中。当异常类非空时,可通过异常类对象在异常处理时传递一些和发生异常相关的数据。3.解释面向对象的抽象性、封装性、继承性和多态性。答:在面向对象技术中,抽象性是指提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。(1分)封装性就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。(2分)继承性是指子类的对象拥有其父类的属性和行为。(1分)多态性是指相同的对象收到相同的消息,或不同的对象收到相同的消息时,产生不同的行为方式。(1分)4.派生类对基类成员函数重载和派生类对基类成员函数覆盖的区别是什么?答:派生类对基类成员函数重载必须满足函数名相同,其参数个数或参数类型要和基类成员函数的参数个数或参数类型有所不同。(2分)派生类对基类成员函数覆盖必须满足参数个数和参数类型要和基类成员函数的参数个数和参数类型完全相同。(3分)5.虚函数怎样实现运行时的多态性?答:(1)设计一个类层次,并在类层次中定义一个或一个以上的虚函数。(1分)(2)在外部程序中定义基类的对象指针。(1分)(3)在外部程序中,当对象指针调用一个虚函数时,若此时该对象指针指向基类对象,系统就调用基类中的相应成员函数;(1分)若此时基类对象指针指向派生类对象,系统就调用派生类中的相应成员函数;(2分)6.C++异常处理的基本思想和基本方法是什么?答:C++异常处理的基本思想是分离异常的抛出和异常的处理。(1分)基本方法是:当程序中出现异常时抛出异常,用来通知系统发生了异常,然后由系统捕捉异常,(2分)并交给预先安排的异常处理程序段来处理异常。(2分)7.类的构造函数和析构函数的功能是什么?答:类的构造函数的功能是在创建对象时给对象赋初值。(2分)类的析构函数的功能是当对象超出其作用域时释放该对象占用的内存空间。(3分)8.简述什么样的类称作可流类?答:对于一个类,如果重载了输入运算符“”和输出运算符“”,这样的类就称作可流类。(3分)这时,可以用输入运算符“”给对象的各成员变量赋值,可以用输出运算符“”输出对象的各成员变量值。(2分)9.简述赋值兼容规则。答:当派生类为公有继承基类时,允许以下四种情况的赋值:规则1:可以用派生类对象为基类对象赋值。(1分)规则2:可以用派生类对象初始化基类引用对象。(1分)规则3:可以把指向派生类对象的指针赋给基类对象的指针。(1分)规则4:可以把派生类对象的地址赋给基类对象的指针。(2分)10.C++的throw-try-catch异常处理方法和C语言if语句的错误处理方法相比,有什么优点?答:C++的throw-try-catch异常处理方法和C语言if语句的错误处理方法相比,最大的优点是可以把异常的抛出和异常的处理分离开处理,这可以方便通用软件模块的设计。(2分)一般来说,对一个通用软件模块,当出现异常时,不同的调用程序要求的异常处理方法是不一样的。(2分)这样,把异常的抛出和异常的处理分离开的异常处理机制,就可以方便通用软件模块的设计。(1分)11.类的析构函数的功能是什么?类的析构函数是怎样被调用的?答:类的析构函数的功能是当对象超出其作用域时释放该对象占用的内存空间。(2分)类的析构函数是当对象超出其作用域时被系统自动调用的。(3分)12.比较派生类对基类成员函数重载和派生类对基类成员函数覆盖两者的相同点和不同点。答:相同点:两种方法都要求成员函数名要完全相同。(1分)不同点:派生类对基类成员函数重载时,必须满足派生类成员函数的参数个数或参数类型要和基类成员函数的参数个数或参数类型有所不同;(2分)派生类对基类成员函数覆盖时,必须满足派生类成员函数的参数个数和参数类型要和基类成员函数的参数个数和参数类型完全相同。(2分)13、static成员变量和非static成员变量有什么差别?答:static成员变量是整个类只有惟一一个的成员变量,而非static成员变量是不同对象有不同值的成员变量;(3分)static成员变量的初始化赋值不能在某一个具体对象定义时进行,要在应用程序的全局作用域内被初始化。而非static成员变量的初始化是在创建对象时通过构造函数初始化赋值的。(2分)14若一个类的某个成员函数修饰为const,表示什么含义?若一个成员函数的某个参数修饰为const,表示什么含义?答:当成员函数修饰为const时,表示限制该成员函数只能读取当前对象的成员变量,但不能修改当前对象的成员变量。当成员函数的某个参数修饰为const时,表示该参数在成员函数内不会、也不能被修改。
本文标题:C++试题叙述题
链接地址:https://www.777doc.com/doc-2401054 .html