1、迭代器所指向的对象为容器中元素(结构体)的节点。如定义一个class List的容器,容器的节点为ListItem,那么迭代器就应该指向(的对象)容器中的ListItem节点。而迭代器通过重载*(解引用)运算符,从而就可以得到节点的值。通过重载operator-运算符就可以得到容器节点地址(指针)算法:算法通过操作容器对应的迭代器,就可以间接地操作容器中的元素。而不需要关注容器的内部细节三者之间联系:每个容器都有专属的迭代器,而算法通过迭代器对容器中的元素进行操作。3、什么是静态成员?有何特点?在c+类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数
2、)。静态成员的特点是:不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。面对对象方法中还有类属性的概念,类属性是描述类的所有对象的共同特征的一个数据项,对于任何对象实例,它的属性值是相同的,C+通过静态数据成员来实现类属性。4、类的构造函数和析构函数有何特点?构造函数主要用来对成员初始化和分配空间,析构函数用于执行一些清理任务,如释放分配给对象的内存空间等。构造函数有以下特点:1.构造函数的名字必须与类名相同;2.构造函数可以有任意类型的参数,但不能具有返回类型;3.定义对象时,编译系统会自动地调用构造函数;4.构造函数是特殊的成员函数,函数体可以在类
3、体内,也可写在类体外;5.构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。析构函数有以下特点:1.析构函数的名字必须与类名相同,但它前面必须加一个波浪号 ;2.析构函数没有参数,也没有返回值,而且不能被重载,因此在一个类中只能有一个析构函数;3.当撤销对象时,编译系统会自动地调用析构函数。5、类成员的访问权限有哪些?类成员的访问权限:继承有关public此成员都可公开调用;protected 同包或对继承的类才可公开调用,静态成员也必须继承后才能调用A.a或使用public;friendly 对同包的类可以公开调用;private 只有本类实例成员
4、方法才可调用。6、面向对象的基本要素是什么?抽象、继承、封装、多态;二)、分析下面的代码,回答问题(每题 10 分,共 40 分)1下面程序的执行结果是什么?为什么?class Bprotected: virtual void f( )coutBendl;public: void g( )f( );class C:public B void f( )coutf() 调用C中的f。2下面程序的执行结果是什么?class Aint n;class B:public A;class D:public B, public Cint getn() return B:n;void main()D d;d.
5、B:n=10;d.C:n=20;coutn10 20D类是从b类和c类派生的,而b类和c类又都是从类派生的,但各有自己的副本。所以对于对象d,d.B:n与d.C:n是两个不同的数据成员,互无联系。所以程序结果为:10,203. 下面程序的执行结果是什么?int x;A()x=0;A(int val)x=val;void operator+(int)x+;public Aint y;B():A()y=0;B(int val1, int val2):A(val1)y=val2;void operator-(int)x-;y-;void disp()xyB d(3,5);d.disp();d+;d-
6、;354523B d(3,5);/调用构造函数B(int,int) A(int) 得到x=3 y=5/打印35/调用继承自A的+函数,x+ 得到x=4 y=5/打印45/调用B的-函数,x=3 y=4/调用B的-函数,x=2 y=3/打印23所以 结果是234. 下面程序的执行结果是什么?Class APublic:virtual void disp() cout”class A”,endl;Class B:void disp() cout”class B”class C”disp();B b;C c;Cdisp(&b);c);class Bclass CB类和c类是a类的派生,p作为参数时,
7、是一个A的指针,但是编译时,调的disp是各自继承类成员函数。所以输出是class B,class C。三、根据要求编写程序:(每题15分,共 30 分)1 设计一个父亲类Father、母亲类Mother和子女类Child,其主要数据是姓名,子女使用父亲的姓,最后输出子女的姓名和父母姓名。程序如下:#includestringusing namespace std;class father father() father(string x,string m) this-x=x; m=m; void getx() cout陈; void show()父亲:mprivate: string x;
8、string m;class mather mather(string x,string m) mx=x; mm=m;母亲:mxmm string mx; string mm;class child:public father child(string m) father f(,国强); mather m(李丽 child c(文化 coutiomanipclass Triangle double x,y,z; double p,m; static double s; Triangle(double a,double b,double c) x=a; y=b; z=c; p=(y+x+z)/2; m=sqrt(p*(p-x)*(p-y)*(p-z); s=s+m; void print()setiosflags(ios:fixed);setprecision(2) static void show()sabc) cina1b1c1; Triangle s1(a,b,c); Triangle s2(a1,b1,c1); s1.print(); s2.print(); Triangle:show(); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1