当前位置:文档之家› 继承和派生习题

继承和派生习题

继承和派生习题
继承和派生习题

继承和派生习题

一、单选题

1.若类A和类B的定义如下:

class A

{

int i,j;

public:

int geti(){return i;}

};

class B: public A

{

int k;

public:

void make(){k=i*j;}

};

则上述中,()是非法的表达式。

A.k=i*j B.int k; C.return i; D.void make();

2.关于公有继承,下列说法错误的是()。

A.基类的公有成员和保护成员被继承后作为派生类的公有成员和保护成员。

B.派生类的其他成员可以直接访问基类的公有成员和保护成员。

C.派生类的对象可以访问基类的私有成员。

D.派生类成员和对象都无法访问基类的私有成员。

3.下列说法中错误的是()。

A.公有继承时基类中的public成员在派生类中仍是public的;

B.公有继承时基类中的private成员在派生类中仍是private的;

C.私有继承时基类中的public成员在派生类中是private的;

D.保护继承时基类中的public成员在派生类中是protected的;

4.在公有继承中,基类中的公有成员作为派生类的()。

A.公有成员

B.私有成员

C.保护成员

D.私有成员函数

5.基类中的()不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。

A.公有成员

B.私有成员

C.保护成员

D.私有成员函数

6.在下面的表达式中,不表示虚继承的是()。

A.virtual public

B.public virtual

C.public

D.virtual

7.设置虚函数的声明中,正确的是()。

A.简化程序

B.消除二义性

C.提高运行效率

D.减少目标代码

8.下面叙述错误的是()。

A.基类的protected成员在派生类中仍然是protected

B.基类的protected成员在public派生类中仍然是protected的

C.基类的protected成员在private派生类中是private的

D.基类的protected成员不能被派生类的对象访问

9.派生类的对象对它的基类成员中()是可以访问的。

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

10.下列对派生类的描述中,错误的是()。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的缺省继承方式是private

D.派生类只含有基类的公有成员和保护成员

11.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

A.规律性

B.传递性

C.重复性

D.多样性

12.设有基类定义:

class Cbase

{ private: int a;

protected: int b;

public: int c;

};

派生类采用何种继承方式可以使成员变量b成为自己的私有成员( )

A.私有继承

B.保护继承

C.公有继承

D.私有、保护、公有均可

13.多继承派生类构造函数构造对象时,()被最先调用。

A.派生类自己的构造函数

B.虚基类的构造函数

C.非虚基类的构造函数

D.派生类中子对象类的构造函数

14.派生类的对象对它的哪一类基类成员是可以访问的?()

A.公有继承的基类的公有成员

B.公有继承的基类的保护成员

C.公有继承的基类的私有成员

D.保护继承的基类的公有成员

15.关于保护继承,下列说法错误的是()。

A.保护继承的特点是基类的所有公用成员和保护成员都成为派生类的保护成员。

B.派生类对象不能访问基类中的任何成员。

C.派生类的对象可以访问基类的公有成员。

D.保护继承的派生类和私有继承的派生类,对基类成员访问属性是相同的。

16.关于私有继承,下列说法错误的是()。

A.基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问他们。

B.基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员不能直接访问他们。

C.基类的私有成员,派生类的成员和派生类的对象都无法访问。

D.派生类的对象无法访问基类的所有成员。

17.在公有继承中,基类中的保护成员作为派生类的()。

A.公有成员

B.私有成员

C.保护成员

D.私有成员函数

18.基类()在派生类中的性质和继承的性质一样。

A.公有成员

B.私有成员

C.保护成员

D.私有成员函数

19.派生类的对象对它的基类成员中的()是可以访问的。

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的私有成员

20.下列虚基类的声明中,正确的是()。

A.class virtual B:public A

B.virtual class B:public A

C.class B:public A virtual

D.class B: virtual public A

二、填空题

1.在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行的析构函数,最后执行的析构函数。

2.派生类构造函数的初始化列表中包含。

3.派生类可以定义其中不具备的数据和操作。

4.C++将类继承分为和两种。

三、问答题

写出下列程序运行结果:

1.#include

using namespace std;

class A

{

int x;

public:

int z;

void setx(int i){x=i;}

int getx(){return x;}

};

class B: public A

{

int m;

public:

void setvalue(int a,int b,int c)

{

setx(c);

z=b;

m=a;

}

void display()

{

cout<

}

};

int main()

{

B obj;

obj.setvalue(2,3,4);

obj.display();

return 0;

}

2.写出程序运行结果:

#include

using namespace std;

class base

{

public:

void who(){cout<<"base class"<

class derive1:public base

{

public:

void who(){cout<<"derive1 class"<

class derive2:public base

{

public:

void who(){cout<<"derive2 class"<

void main()

{

base obj1;

obj1.who();

derive1 obj2;

obj2.base::who();

derive2 obj3;

obj3.base::who();

}

3.阅读下列程序,写出程序运行结果。#include

using namespace std;

class Base

{

int x;

public:

Base(int i)

{

x=i;

cout<<"Constuctor of Base"<

}

~Base(){cout<<"Destuctor of Base"<

};

int main()

{

Derived obj(5);

obj.show();

return 0;

}

4.阅读下列程序,写出程序运行结果。

#include

using namespace std;

class Person

{

public:

Person(){cout<<"Constructor of Person"<

~Person(){cout<<"Destructor of Person"<

};

class Student:public Person

{

public:

Student(){cout<<"Constructor of Student"<

~Student(){cout<<"Destructor of Student"<

};

class Teacher:public Person

{

public:

Teacher(){cout<<"Constructor of Teacher"<

~Teacher(){cout<<"Destructor of Teacher"<

};

int main()

{

Student s;

Teacher t;

return 0;

}

5.阅读下列程序,写出程序运行结果。

#include

using namespace std;

class data

{

int x;

data(int n)

{

x=n;

cout<<"data"<

}

~data(){cout<<"data"<

};

class A

{

data d1;

public:

A(int x):d1(x){ cout<<"A"<

void dispa()

{

cout<

}

~A(){ cout<<"A"<

};

class B:public A

{

data d2;

public:

B(int x):A(x-1),d2(x){ cout<<"B"<

void dispb()

{

dispa();

cout<

}

};

int main()

{

B obj(5);

obj.dispb();

return 0;

}

6.阅读下列程序,写出程序运行结果。#include

using namespace std;

{

protected:

int x,y;

public:

A()

{

x=3,y=4;

cout << "A() Constructor!" << endl;

}

A(int m,int n)

{

x=m,y=n;

cout << "A(int m,int n) Constructor!" << endl;

}

~A(){cout << "A Destructor!" << endl;}

};

class B : public A

{

protected:

int i,j;

public:

B(int a,int b):A(a,b)

{

i=3,j=4;

cout << "B(int a,int b) Constructor!" << endl;

}

B(int a,int b,int m,int n):A(m,n)

{

i=a,j=b;

cout << "B(int a,int b,int m,int n) Constructor!" << endl; }

~B(){cout << "B Destructor!" << endl;}

void print()

{

cout<

}

};

int main()

{

B d(1,2);

d.print();

return 0;

7.阅读下列程序,写出程序运行结果。

#include

using namespace std;

class A

{

protected:

int x,y;

public:

A(int m=5,int n=6)

{

x=m,y=n;

}

};

class B : public A

{

protected:

int i,j;

public:

B(int a,int b)

{

i=a,j=b;

}

B(int a,int b,int m,int n):A(m,n)

{

i=a,j=b;

}

void print()

{

cout<

};

int main()

{

B d(1,2);

d.print();

B c(1,2,3,4);

c.print();

return 0;

8.阅读下列程序,写出程序运行结果。#include

using namespace std;

class A

{

public:

A(int i,int j )

{

a=i;

b=j;

}

void move(int x,int y)

{

a+=x;

b+=y;

}

void show( ){cout<

int a,b;

};

class B:public A

{

public:

B(int i,int j):A(i,j){}

void fun()

{

move(3,5);

}

};

int main( )

{

B d(3,4);

d.fun();

d.show();

return 0;

}

9.阅读下列程序,写出程序运行结果。#include

using namespace std;

class BaseClass

{

public:

BaseClass() { cout << "BaseClass Constructor!" << endl;}

~BaseClass() { cout << "BaseClass Destructor!" << endl;}

};

class DerivedClass : public BaseClass

{

public:

DerivedClass() {cout << "DerivedClass Constructor!" << endl;} ~DerivedClass() {cout << "DerivedClass Destructor!" << endl;} };

int main()

{

DerivedClass d;

return 0;

}

10.写出下列程序运行结果:

#include

using namespace std;

class B0

{

public:

void display(){cout<<"B0::display()"<

};

class B1: public B0

{

public:

void display(){cout<<"B1::display()"<

};

class D1: public B1

{

public:

void display(){cout<<"D1::display()"<

};

int main()

{

B0 b0;

B1 b1;

D1 d1;

B0 *p;

p=&b0;

p->display();

p=&b1;

p->display();

p=&d1;

p->display();

}

11.写出程序运行结果:

#include

using namespace std;

class Base

{

int x;

public:

Base(int xx=0):x(xx){cout<<"Constuctor of Base"<

void Print(){cout<

int GetX(){return x;}

};

class Derived:public Base

{

int y;

Base z;

public:

Derived(int xx=0,int yy=0):Base(xx),y(yy),z(xx+yy) {cout<<"Constuctor of Derived"<

~Derived(){cout<<"Destuctor of Derived"<

void Print()

{

Base::Print();

cout<

}

};

int main()

{

Derived obj1(2);

obj1.Print();

return 0;

}

12.写出程序运行结果:

#include

using namespace std;

class AA

{

int a;

public:

AA() { cout<<"Initializing AA!\n"; }

~AA() { cout<<"Destroying AA!\n";} };

class BB

{

int b;

AA p;

public:

BB() { cout<<"Initializing BB!\n"; }

~BB() { cout<<"Destroying BB!\n";} };

void main()

{

BB X;

cout<<"Ending main!\n";

}

13.写出程序运行结果:

#include

using namespace std;

class A

{

public:

A() { cout << "Constructor A" << endl;} ~A() { cout << "Destructor A" << endl;} };

class B : public A

{

public:

B() {cout << "Constructor B" << endl;} ~B() {cout << "Destructor B" << endl;} };

class C : public B

{

public:

C() {cout << "Constructor C" << endl;}

~C() {cout << "Destructor C" << endl;} };

int main()

{

C c1;

return 0;

}

14.写出程序运行结果:

#include

using namespace std;

class A

{

public:

A(){a=0;b=0;}

A(int i){a=i;b=0;}

A(int i,int j){a=i;b=j;}

void display()

{

cout<<"a="<

类的继承与派生

类的继承与派生 编写一个程序设计一个汽车类vehicle,包含的数据成员有车轮个数wheels 和车重weight。小车类car是它的派生类其中包含载人数passenger_load。卡车类truck是vehicle的派生类其中包含载人数passenger_load和载重量payload,每个类都有相关数据的输出方法. 提示:vehicle类是基类由它派生出car类和truck类将公共的属性和方法放在vehicle类中。 输出结果: 车型:小车 车轮:4个 重量:2000公斤 载人:5人 车型:卡车 车轮:10个 重量:8000公斤 载人:3人 参考代码: #include class vehicle // 定义汽车类 { protected: int wheels; // 车轮数

float weight; // 重量 public: vehicle(int wheels,float weight); int get_wheels(); float get_weight(); float wheel_load(); void show(); }; class car:public vehicle // 定义小车类 { int passenger_load; // 载人数 public: car(int wheels,float weight,int passengers=4); int get_passengers(); void show(); }; class truck:public vehicle // 定义卡车类 { int passenger_load; // 载人数 float payload; // 载重量 public: truck(int wheels,float weight,int passengers=2,float max_load=24000.00); int get_passengers(); float efficiency(); void show(); }; vehicle::vehicle(int wheels,float weight) { vehicle::wheels=wheels; vehicle::weight=weight;

实验四 继承与派生讲解学习

实验四继承与派生

实验四派生类与继承 【实验类型】验证性实验【实验课时】2学时 【实验目的】 (1)理解类的继承的概念,能够定义和使用类的继承关系。 (2)掌握派生类的声明与定义方法。 (3)熟悉公有派生和私有派生的访问特性。 (4)学习虚基类在解决二义性问题中的作用。 【实验环境】 硬件:计算机 软件:Microsoft Visual C++ 6.0 【实验内容】 1、按要求阅读、编写、调试和运行以下程序。 (1)实验内容 ①定义一个基类MyArray,基类中可以存放一组整数。 class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length;}; // 整数的个数 基类中有构造函数、析构函数、输入数据和输出数据的函数。 ②定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。

③定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。 ④定义一个类AverArray继承自MyArray ,在该类中定义函数Aver求解整数的平均值。 ⑤定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。 (2)实验程序 (参考) 程序如下: #include "iostream.h" #include "process.h" class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length; // 整数的个数 }; MyArray::MyArray(int leng) { length=leng; alist=new long int[length]; if(alist==NULL) { cout<<"对不起,创建失败。请重试。 ";exit(1); } } MyArray::~MyArray() {

有机波谱分析习题(最新)

有机波谱分析习题 第一章电子辐射基础 (一)判断题 1.现代分析化学的任务是测定物质的含量。( ) 2.测定某有机化合物中C、H、O、N元素含量的方法属于定性分析。( ) 3.测定某有机化合物中是否含有羰基属于有机结构分析。( ) 4.利用物质分子吸收光或电磁辐射的性质,建立起来的分析方法属于吸收光谱分析。( ) 5.物质被激发后,利用物质跃迁至低能态或基态时发光的性质建立起来的分析方法属于发射光谱分析。( ) 6.根据Franck-condon原理,在电子能级发生跃迁时,必然伴随振动能级和转动能级的变化。( ) 7.紫外吸收光谱、红外吸收光谱、核磁共振波谱和质谱是有机结构分析的四种主要的有机光波谱分析方法,合称为四大谱。( ) 8.电磁辐射的波长越长,能量越大。( ) 9.有机波谱分析方法和仪器分析方法的灵敏度和准确度都要比化学分析法高得多。( ) 10.一般来讲,分子光谱远比原子光谱复杂,原子光谱通常为线状光谱,而分子光谱为带状光谱。( ) 11.吸收定律偏离线性完全是由于仪器因素引起的。( ) 12.电子能级间隔越小,跃迁时吸收光子的频率越大。( ) 13.分子光谱是由于电子的发射而产生的。( ) 14.分子荧光也叫二次光,都属吸收光谱的畴。( ) 15.ICP可用于测定F、Cl、Br、C、H、N、O、S等非金属元素。( ) (一)判断题答案 1.×2.×3.√4.√5.√6.√7.√8.×9.×l0.√11.×l2.×13.×l4.×l5.× (二)单选题 1.光或电磁辐射的二象性是指( )。 A.电磁辐射是由电矢量和磁矢量组成;B.电磁辐射具有波动性和电磁性; C.电磁辐射具有微粒性和光电效应;D.电磁辐射具有波动性和微粒性。 2.光量子的能量与电磁辐射的哪一个物理量成正比?( ) A.频率;B.波长;C.周期;D.强度 3.可见光区、紫外光区、红外光区、无线电波四个电磁波区域中,能量最大和最小的区域分别为( )。 A.紫外光区和无线电波区;B.紫外光区和红外光区; C。可见光区和无线电波区;D.可见光区和红外光区。 4.频率为l×107MHz的电磁辐射是处在哪个光区?( ) A.红外光区;B.紫外光区;C.无线电波区;D.可见光区。 5.有机化合物成键电子的能级间隔越小,受激跃迁时吸收电磁辐射的( )。 A.能量越大;B.波数越大;C.波长越长;D.频率越高。 6.分析化学发生第二次变革的年代是( )。 A.20世纪初;B.20世纪20年代;C.20世纪40年代;D.20世纪末。

C++语言程序设计实验答案_继承与派生教学提纲

C++语言程序设计实验答案_继承与派生

实验07 继承与派生(4学时) (第7章继承与派生) 一、实验目的 二、实验任务 7_1 声明一个基类Animal。 有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。 7_2 声明一个基类BaseClass。 有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 7_3 声明一个车(vehicle)基类。 具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。

7_4 以实验6中的People(人员)类为基类。 派生出student(学生)类,添加属性:班号char classNo[7]; 派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。 从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser; 从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。 类之间的关系如图7-1所示。 图7-1 类图

类的继承与派生综合题

1. 类的继承与派生综合题1 题目描述 定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类。 要求: a.在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。在Saleman类中还包含数据成员:销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员:经理提成比例(totalDeductRate)和总销售额(totalAmount)。在SaleManager类中不包含其他数据成员。 b.各类人员的实发工资公式如下: 员工实发工资=基本工资+奖金*出勤率 销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例 经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例 销售经理实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例+总销售额*经理提成比例 c.每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。 主函数如下: int main() { Salemanobjsale(101101, "LD", 0.88f, 1200, 800, 0.05f, 10000); Manager objmana(101102, "NXG", 0.90f, 2500, 1000, 0.10f, 20000); SaleManagerobjsalemana(101103, "HDY", 0.99f, 3500, 2000, 0.20f, 100000, 0.20f,150000); objsale.Output(); cout<< "销售员的实发工资:" << " "; cout<

c练习题带答案

c练习题带答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-

一、选择题 1.C++语言属于( C )。 A)自然语言 B)机器语言 C)面向对象语言 D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。 A)继承性 B)多态性 C)相似性 D)封装性 3.可用作C++语言用户标识符的一组标识符是( B )。 A) void define +WORD B) a3_b3 _123 YN C) for -abc Case D) 2a DO sizeof 4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素 a[2][1]的值为(A)。 A) 0 B) 4 C) 8 D) 6 5.下列情况中,哪一种情况不会调用拷贝构造函数( B ) A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时 D)函数的返回值是类的对象,函数执行返回调用者时 6.以下哪一关键字可用于重载函数的区分(C) A)extern B)static C)const D)virtual 7.下列有关数组的叙述中,正确的是( B ) A)C++中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从1开始,至数组长度n结束 D)数组指针的语法形式为:类型名 *数组名[下标表达式]; 8.下列有关继承和派生的叙述中,正确的是( C ) A)派生类不能访问通过私有继承的基类的保护成员 B)多继承的虚基类不能够实例化 C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 9.实现运行时多态的机制是( A ) A)虚函数B)重载函数C)静态函数D)模版函数 10.若有下面的函数调用: fun(a+b, 3, max(n-1, b)); 其中实参的个数是( A) A)3 B)4 C)5 D)6 11.下列关于this指针的说法正确的是( B)

实验六继承与派生

继承与组合 一、实验目的 1.了解继承在面向对象程序设计中的重要作用。 2.进一步理解继承与派生的概念。 3.掌握通过继承派生出一个新的类的方法。 4.了解虚基类的作用和用法。 5.掌握类的组合 二、实验内容 1.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。 (1) #include using namespace std; class A {public: A(){cout<<"A::A() called.\n";} virtual ~A(){cout<<"A::~A() called.\n";} }; class B:public A {public: B(int i) { cout<<"B::B() called.\n";

buf=new char[i]; } virtual ~B() { delete []buf; cout<<"B::~B() called.\n"; } private: char *buf; }; void fun(A *a) { cout<<"May you succeed!"<

A::A() called. B::B() called. May you succeed! B::~B() called. A::~A() called. (2) #include using namespace std; class A{ public: A(int a,int b):x(a),y(b){ cout<<"A constructor..."<

继承与多态习题

继承与多态习题 一.基本概念与基础知识自测题 8.1填空题 8.1.1 如果类α继承了类β,则类α称为(1)类,而类β称为(2)类。(3)类 的对象可作为(4)类的对象处理,反过来不行,因为(5)。如果强制转换则要注意(6)。 答案:(1)基类 (2)派生类 (3)派生类 (4)基类 (5)派生类有一些新成员 (6)只能派生类强制转换为基类 8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的(1)成员, protected成员成为派生类的(2)成员,对private成员是(3)。公有派生可以使其类的(4),所以公有派生是主流。 答案:(1)public成员 (2)protected成员 (3)不可访问 (4)接口不变 8.1.3 利用继承能够实现(1)。这种实现缩短了程序开发的时间,VC++中的(2)很 好地体现了这一点。 答案:(1)代码的复用 (2)MFC编程 8.1.4 一个派生类只有一个直接基类的情况称为(1),而有多个直接基类的情况称为 (2)。继承体现了类的(3)概念,这在MFC中得到了很好表现,MFC中只采用了(4)。 答案:(1)单继承 (2)多重继承 (3)层次 (4)单继承 8.1.5 C++中多态性包括两种多态性:(1)和(2)。前者是通过(3)实现的, 而后者是通过(4)和(5)来实现的。 答案:(1)编译时的 (2)运行时的 (3)函数和运算符的重载 (4)类继承关系 (5)虚函数 8.1.6 在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1)、(2)和

(3)完全一样就认为是虚函数,而不必再加关键字(4)。如有任何不同,则认为是(5)而不是虚函数。除了非成员函数不能作为虚函数外,(6)、(7)和(8)也不能作为虚函数。 答案:(1)同虚函数名 (2)同参数表 (3)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的 (4)virtual (5)重载 (6)静态成员函数 (7)内联函数 (8)构造函数 8.1.7 纯虚函数定义时在函数参数表后加(1),它表明程序员对函数(2),其本质 是将指向函数体的指针定为(3)。 答案:(1)=0 (2)不定义 (3)NULL 8.2简答题 8.2.1构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的?答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是: 1.调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。 2.调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。 3.派生类的构造函数体中的操作。 8.2.2什么叫派生类的同名覆盖(override)? 答:如果派生类声明了一个和某个基类成员同名的新成员(当然如是成员函数,参数表也必须一样,否则是重载),派生类中的新成员就屏蔽了基类同名成员,类似函数中的局部变量屏蔽全局变量。称为同名覆盖(override)。 8.2.3派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的 调用?为什么? 答:析构函数的功能是作善后工作,析构函数无返回类型也没有参数,情况比较简单。派生类析构函数定义格式与非派生类无任何差异,不要编写对基数和成员对象的析构函数的调用,只要在函数体内把派生类新增一般成员处理好就可以了,因为对新增的成员对象和基类的善后工作,系统会自己调用成员对象和基类的析构函数来完成。 8.2.4为什么要使用虚基类?怎样定义虚基类?用一个实例来解释虚基类在其派生类中的 存储方式。 答:在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基类。虚基类(virtual base class)定义方式如下: class派生类名:virtual 访问限定符基类类名{...}; class派生类名:访问限定符virtual基类类名{...}; virtual 关键字只对紧随其后的基类名起作用。

波普分析试题

波谱解析试题A 一、名词解释(5*4分=20分) 1.波谱学:波谱学是涉及电池辐射与物质量子化的能态间的相互作用,其理论基础是量子化的能量从辐射场向物质转移。 2.屏蔽效应:感生磁场对外磁场的屏蔽作用称为电子屏蔽效应 3.电池辐射区域:γ射线区,X射线区,远紫外,紫外,可见光区,近红外,红外,远红外区,微波区和射频区 4.重排反应;在质谱裂解反应中,生成的某些离子的原子排列并不保持原来分子结构的关系,发生了原子或基团重排,产生这些重排离子的反应叫做重排反应 5.驰骋过程:要想维持NMR信号的检测,必须要有某种过程,这个过程就是驰骋过程,即高能态的核以非辐射的形式放出能量回到低能态,重建Boltzmann分布的过程。 二、选择题。(10*2分=20分)CDBBA BCCAB 1. 化合物中只有一个羰基,却在1773cm-1和1736cm-1处出现两个吸收峰这是因为:(C ) A、诱导效应 B、共轭效应 C、费米共振 D、空间位阻 2. 一种能作为色散型红外光谱仪的色散元件材料为:() A、玻璃 B、石英 C、红宝石 D、卤化物晶体 3. 预测H2S分子的基频峰数为:(B ) A、4 B、3 C、2 D、1 4. 若外加磁场的强度H0逐渐加大时,则使原子核自旋能级的低能态跃迁到高能态所需的能量是如何变化的:() A、不变 B、逐渐变大 C、逐渐变小 D、随原核而变 5. 下列哪种核不适宜核磁共振测定:() A、12C B、15N C、19F D、31P 6.在丁酮质谱中,质荷比质为29的碎片离子是发生了() A、α-裂解 B、I-裂解 C、重排裂解 D、γ-H迁移 7. 在四谱综合解析过程中,确定苯环取代基的位置,最有效的方法是()

实验四:派生类和继承(一)

福建农林大学金山学院实验报告 系(教研室):信息与机电工程系专业:计算机科学与技术年级: 实验课程:面向对象程序设计姓名:学号:  实验室号 计算机号 实验时间:指导教师签字:成绩: 实验4 派生类和继承(一) 一、实验目的和要求 (1)掌握派生类的声明与定义方法,进一步理解类的继承的概念,能够定义和使用类的继承关系。 (2)熟悉公有派生和私有派生的访问特性。 二、实验内容和原理 1、程序分析题(写出程序的输出结果,并分析结果)。

2、(1)定义一个基类animal,该类具有私有整型成员变量age,weight,构造派生类dog公有继承animal,dog类新增私有成员变量color,新增成员函数SetAge(int n)中直接给age赋值,新增成员函数SetWeight(int m)中直接给weight赋值,查看编译结果,并分析结果。(2)将类animal中的age和weight为公有成员,重做第一步,并分析结果。(3)将类animal中的age和weight为保护成员,重做第一步,并分析结果。(4)将派生类dog的继承方式改为私有继承方式和保护继承方式重做以上各小题,并分析结果。 三、实验环境 1. 硬件:PC机; 2. 软件:Windows操作系统、Visual C++ 6.0 四、算法描述及实验步骤 2.1 #include class animal {private:int age,weight;}; class dog:public animal

{private:char color[10]; public: int SetAge(int n) {age=n;return n;} int SetWeight (int m) {weight=m;return m; } }; int main() { int x,y; dog a; cout<<"请输入这条狗的岁数="; cin>>x;cout< class animal {public:int age,weight;}; class dog:public animal {private:char color[10]; public: int SetAge(int n) {age=n;return n;} int SetWeight (int m)

c++实验8继承与派生上机练习题

1. 定义一个哺乳动物类Mamma,l 并从中派生出一个狗类Dog,要求: ( 1) 添加Dog 类的颜色数据成员,访问属性为私有,通过函数来对颜色进行设置和获取。 ( 2) 分别为基类和派生类添加相应的构造函数(有参、无参) 测试。 class Mammal { protected: int itsAge; int itsWeight; public: int GetAge(){return itsAge;} void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;} void SetWeight(int weight) {itsWeight= weight;} }; class Dog : public Mammal { // 定义Dog 类的数据成员和成员函数 }; 改: #include #include using namespace std; class Mammal { protected: int itsAge; int itsWeight; public: Mammal(); ~Mammal(); int GetAge(){return itsAge;} void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;} void SetWeight(int weight) {itsWeight= weight;} }; class Dog : public Mammal {下面给出Mamma类的定义,SetColor 和GetColor 成员和析构函数,并进行

(一到四章)有机化合物波谱解析复习指导

第一章紫外光谱 一、名词解释 1、助色团:有n电子的基团,吸收峰向长波方向移动,强度增强. 2、发色团:分子中能吸收紫外或可见光的结构系统. 3、红移:吸收峰向长波方向移动,强度增加,增色作用. 4、蓝移:吸收峰向短波方向移动,减色作用. 5、增色作用:使吸收强度增加的作用. 6、减色作用:使吸收强度减低的作用. 7、吸收带:跃迁类型相同的吸收峰. 二、选择题 1、不是助色团的是:D A、-OH B、-Cl C、-SH D、 CH3CH2- 2、所需电子能量最小的电子跃迁是:D A、ζ→ζ* B、 n →ζ* C、π→π* D、 n →π* 3、下列说法正确的是:A A、饱和烃类在远紫外区有吸收 B、 UV吸收无加和性 C、π→π*跃迁的吸收强度比n →ζ*跃迁要强10-100倍 D、共轭双键数目越多,吸收峰越向蓝移 4、紫外光谱的峰强用εmax表示,当εmax=5000~10000时,表示峰带:B 很强吸收B、强吸收 C、中强吸收 D、弱吸收 5、近紫外区的波长为:C A、 4-200nm B、200-300nm C、200-400nm D、300-400nm 6、紫外光谱中,苯通常有3个吸收带,其中λmax在230~270之间,中心为254nm的吸收带是:B A、R带 B、B带 C、K带 D、E1带 7、紫外-可见光谱的产生是由外层价电子能级跃迁所致,其能级差的大小决定了C A、吸收峰的强度 B、吸收峰的数目 C、吸收峰的位置 D、吸收峰的形状 8、紫外光谱是带状光谱的原因是由于:D A、紫外光能量大 B、波长短 C、电子能级差大 D、电子能级跃迁的同时伴随有振动及转动能级跃迁的原因 9、π→π*跃迁的吸收峰在下列哪种溶剂中测量,其最大吸收波长最大:A A、水 B、乙醇 C、甲醇 D、正己烷 10、下列化合物中,在近紫外区(200~400nm)无吸收的是:A A、 B、 C、 D、 11、下列化合物,紫外吸收λmax值最大的是:A(b) A、 B、 C、 D、 12、频率(MHz)为4.47×108的辐射,其波长数值为A

C 第八章继承与派生习题习题解答

第八章继承与多态习题 一.基本概念与基础知识自测题 8.1填空题 8.1.1 如果类α继承了类β,则类α称为(1)类,而类β称为(2)类。(3)类 的对象可作为(4)类的对象处理,反过来不行,因为(5)。如果强制转换则要注意(6)。 答案:(1)基类 (2)派生类 (3)派生类 (4)基类 (5)派生类有一些新成员 (6)只能派生类强制转换为基类 8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的(1)成员, protected成员成为派生类的(2)成员,对private成员是(3)。公有派生可以使其类的(4),所以公有派生是主流。 答案:(1)public成员 (2)protected成员 (3)不可访问 (4)接口不变 8.1.4 一个派生类只有一个直接基类的情况称为(1),而有多个直接基类的情况称为 (2)。继承体现了类的(3)概念,这在MFC中得到了很好表现,MFC中只采用了(4)。 答案:(1)单继承 (2)多重继承 (3)层次 (4)单继承 8.1.6 C++中多态性包括两种多态性:(1)和(2)。前者是通过(3)实现的, 而后者是通过(4)和(5)来实现的。 答案:(1)编译时的 (2)运行时的 (3)函数和运算符的重载 (4)类继承关系 (5)虚函数 8.2简答题(以下习题题号可能和教材不一致!) 8.2.1构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的?答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是: 1.调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。 2.调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。 3.派生类的构造函数体中的操作。 8.2.2什么叫派生类的同名覆盖(override)?

《有机波谱析》习题

第二章:紫外吸收光谱法 一、选择 1. 频率(MHz)为4.47×108的辐射,其波长数值为 (1)670.7nm (2)670.7μ(3)670.7cm (4)670.7m 2. 紫外-可见光谱的产生是由外层价电子能级跃迁所致,其能级差的大小决定了(1)吸收峰的强度(2)吸收峰的数目 (3)吸收峰的位置(4)吸收峰的形状 3. 紫外光谱是带状光谱的原因是由于 (1)紫外光能量大(2)波长短(3)电子能级差大 (4)电子能级跃迁的同时伴随有振动及转动能级跃迁的原因 4. 化合物中,下面哪一种跃迁所需的能量最高 (1)σ→σ*(2)π→π*(3)n→σ*(4)n→π* 5. π→π*跃迁的吸收峰在下列哪种溶剂中测量,其最大吸收波长最大 (1)水(2)甲醇(3)乙醇(4)正己烷 6. 下列化合物中,在近紫外区(200~400nm)无吸收的是

(1)(2) (3)

(4)7. 下列化合物,紫外吸收λmax值最大的是

(1)(2) (3) (4)

二、解答及解析题 1. 吸收光谱是怎样产生的?吸收带波长与吸收强度主要由什么因素决定? 2. 紫外吸收光谱能提供哪些分子结构信息?紫外光谱在结构分析中有什么用途又有何 局限性? 3. 分子的价电子跃迁有哪些类型?哪几种类型的跃迁能在紫外吸收光谱中反映出来? 4. 影响紫外光谱吸收带的主要因素有哪些? 5. 溶剂对紫外吸收光谱有什么影响?选择溶剂时应考虑哪些因素? 6. 什么是发色基团?什么是助色基团?它们具有什么样结构或特征? 7. 为什么助色基团取代基能使烯双键的n→π*跃迁波长红移?而使羰基n→π*跃迁波长蓝移? 8. 为什么共轭双键分子中双键数目愈多其π→π*跃迁吸收带波长愈长?请解释其因。 9. pH对某些化合物的吸收带有一定的影响,例如苯胺在酸性介质中它的K吸收带和B 吸收带发生蓝移,而苯酚在碱性介质中其K吸收带和B吸收带发生红移,为什么?羟酸 在碱性介质中它的吸收带和形状会发生什么变化? 10. 某些有机化合物,如稠环化合物大多数都呈棕色或棕黄色,许多天然有机化合物也 具有颜色,为什么? 11. 画出酮羰基的电子轨道(π,n,π*)能级图,如将酮溶于乙醇中,其能级和跃 迁波长将发生什么变化?请在图上画出变化情况。 12. 某化合物的紫外光谱有B吸收带,还有λ=240nm,ε=13×104及λ=319nm,ε=50两 个吸收带,此化合物中含有什么基团?有何电子跃迁? 13. 下列化合物的紫外吸收光谱可能出现什么吸收带?并请估计其吸收波长及摩尔吸光 系数的范围。

实验四 继承与派生

实验四继承与派生 一、实验目的: 掌握利用单继承和多重继承的方式定义派生类的方法; 深刻理解在各种继承方式下构造函数和析构函数的执行顺序; 理解和掌握公有继承,私有继承和保护继承对基类成员的访问机制; 理解虚基类的概念以及引入虚基类的目的和作用。 二、实验时间: 三、实验地点: 四、实验内容: 1.运行以下程序,并对运行结果进行分析 #include"stdafx.h" #include using namespace std; class base{ int n; public: base(int a) {cout<<"constructing base class"<

继承与派生参考代码

1197: 继承与派生1 Description 请以点类Point为基类派生出一个圆类Circle。圆类Circle的数据成员为r(私有属性,存储圆的半径,圆心的点坐标通过继承点类Point加以实现),成员函数有构造函数Circle、计算圆的面积函数Area、计算圆的周长函数Perimeter和输出函数Display,其中构造函数实现基类和圆类的数据成员的初始化,Display函数实现圆心坐标(利用基类Point的Display实现)、圆的半径、圆的面积(利用Area函数实现)和圆的周长(利用Perimeter函数实现)的输出。请编写圆类的定义及成员函数实现,并在主函数中定义圆类对象,验证各个函数的正确性。说明:圆周率PI的取值为3.14 已知Point类的定义及main代码如下:(不允许改动) class Point { public: Point(double xx,double yy); //constructor void Display(); //display point private: double x,y; //平面的点坐标x,y }; int main() { double x,y,r; cin>>x>>y>>r; //圆心的点坐标及圆的半径 Circle C(x,y,r); C.Display(); //输出圆心点坐标,圆的半径,圆的面积,圆的周长 return 0; } Input Output Sample Input 1.5 2.6 1.8 Sample Output Center:Point(1.5,2.6) Radius:1.8 Area:10.1736 Perimeter:11.304 ************************************************************************** #include using namespace std; class Point { public: Point(double xx,double yy) //constructor

相关主题
文本预览
相关文档 最新文档