当前位置: 首页 > news >正文

网站建设行业动态360怎么做网站搜索

网站建设行业动态,360怎么做网站搜索,烟台市城市建设发展有限公司网站,岑巩网站建设一、选择题 1、下列关于动态联编的描述中#xff0c;错误的是#xff08;#xff09;。 A#xff0e;动态联编是以虚函数为基础 B#xff0e;动态联编是运行时确定所调用的函数代码的 C#xff0e;动态联编调用函数操作是指向对象的指针或对象引用 D#xff0e;动态联编…一、选择题 1、下列关于动态联编的描述中错误的是。 A动态联编是以虚函数为基础 B动态联编是运行时确定所调用的函数代码的 C动态联编调用函数操作是指向对象的指针或对象引用 D动态联编是在编译时确定操作函数的 答案D 2、设置虚基类的目的是 B A简化程序 B消除二义性 C提高程序运行效率 D减少目标代码 3、在派生类中重新定义虚函数时必须在ABE方面与基类保持一致。(多选题) A参数个数 B参数类型 C参数名字 D操作内容 E返回类型 4、多继承派生类构造函数构造对象时()被最先调用。 A派生类自己的构造函数 B虚基类的构造函数 C非虚基类的构造函数   D派生类中子对象类的构造函数 答案 分析多继承派生类构造函数构造对象时构造函数的调顺序是虚基类的构造函数 派生类中子对象类的构造函数, 派生类自己的构造函数。 5、C类体系中能被派生类继承的是()。 A构造函数 B虚函数 C析构函数 D友元函数 答案 分析C类体系中构造函数、析构函数和友元函数是不能被派生类继承的 6、关于虚函数的描述中正确的是。 A虚函数是一个静态成员函数 B虚函数是一个非成员函数 C虚函数即可以在函数说明定义也可以在函数实现时定义 D派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 答案D 7、下面4个选项中 是用来声明虚函数的。 Avirtual Bpublic Cusing Dfalse 答案A 8、编译时的多态性可以通过使用( )获得。 A虚函数和指针 B重载函数和析构函数 C虚函数和对象 D虚函数和引用 答案C编译时多态就是静态多态静态多态有函数重载、运算符重载、模板。A与D都可以实现动态多态。 使用对象调用虚函数是静态联编也就是静态多态(上课虚函数访问讲过) 9、关于纯虚函数和抽象类的描述中错误的是 。 A纯虚函数是一种特殊的虚函数它没有具体的实现 B抽象类是指具有纯虚函数的类 C一个基类中说明有纯虚函数该基类派生类一定不再是抽象类 D抽象类只能作为基类来使用其纯虚函数的实现由派生类给出 答案C 10、下列描述中 是抽象类的特征。 A可以说明虚函数 B可以进行构造函数重载 C可以定义友元函数 D不能说明其对象 答案D 11、以下 成员函数表示虚函数。 Avirtual int vf(int); Bvoid vf(int)0; Cvirtual void vf()0; Dvirtual void vf(int) { }; 答案C 12、如果一个类至少有一个纯虚函数那么就称该类为A。 A抽象类 B虚函数 C派生类 D以上都不对 答案A 13、要实现动态联编必须通过 调用虚函数。 A对象指针 B成员名限定 C对象名 D派生类名 答案A 14、下面描述中正确的是A。 Avirtual可以用来声明虚函数 B含有纯虚函数的类是不可以用来创建对象的因为它是虚基类 C即使基类的构造函数没有参数派生类也必须建立构造函数 D静态数据成员可以通过成员初始化列表来初始化 答案A 二、写出下列程序的输出结果。 1、分析下列程序的输出结果。 #include iostreamusing std::endl; using std::cout;class A { public:A() { cout As cons. endl; }virtual ~A() { cout As des. endl; }virtual void f() { coutAs f().endl; }void g() { f();} }; class B : public A { public:B() { f(); coutBs cons.endl; }~B() { coutBs des.endl; } }; class C : public B { public:C() { coutCs cons.endl; }~C() { coutCs des.endl; }void f() { coutCs f().endl; } }; int main(void) { A *anew C;a-g();delete a;return 0; }运行结果 A’s cons. A’s f(). B’s cons. C’s cons. C’s f(). C’s des. B’s des. A’s des. 2、根据给定的程序执行结果将下列程序补充完整。 #include iostreamusing std::endl; using std::cout;class Base { public:Base(int i) {b i;}(1)    protected:int b; }; class Derive1 :public Base { public:(2)   void Print(){coutDerive1s Print() called.endl;} }; class Derive2 :public Base {   (3)    }; void fun(  (4)  ) { obj-Print(); } int main(void) { (5)   fun(d1);fun(d2); } 程序的执行结果如下 Derive1s Print() called. Derive2s Print() called.#include iostreamusing std::endl; using std::cout; class Base { public:Base(int i){bi;}virtual void Print(){}; protected:int b; }; class Derive1 :public Base { public:Derive1():Base(1){}void Print(){coutDerive1s Print() called.endl;} }; class Derive2 :public Base { public:Derive2():Base(1){}void Print(){coutDerive2s Print() called.endl;} }; void fun(Base *obj) {obj-Print(); }int main(void) {Base *d1new Derive1;Base *d2new Derive2;fun(d1);fun(d2);return 0; }3、根据给定的程序执行结果 #include iostream using std::endl; using std::cout;class A { public:A(int i,int j) {ai;bj;}void move(int i,int j) {ai;bj;}void disp() { cout ( a , b ) endl;} private:int a,b; };class B:public A { public:B(int i,int j,int k,int l):A(i,j),x(k),y(l){ }void disp() {cout x , y endl;}void fun() {move(3,5);} private:int x,y; };void main() {A m(1,2);m.disp();B d(3,4,5,6);d.fun();d.A::disp();d.disp(); }结果 (1,2) (6,9) 5,6 4、根据给定的程序执行结果 #include iostream using std::endl; using std::cout;class Base { public:Base(){ a5;coutBase aaendl;} protected:int a; };class Base1:virtual public Base{ public:Base1(){ aa10; coutBase1 aaendl;} };class Base2: virtual public Base{ public:Base2(){aa20; coutBase2 aaendl;} };class Derived :public Base1 ,public Base2 { public:Derived(){ coutDerived aaendl;} };int main(void) { Derived obj;return 0; }运行结果 Base a5 Base1 a15 Base2 a35 Derived a35 5、根据给定的程序执行结果 #includeiostreamusing std::endl; using std::cout;class Base1{ public:virtual void fun() { cout--Base1--\n; } };class Base2{ public:void fun() { cout--Base2--\n; } };class Derived :public Base1 ,public Base2 { public:void fun(){ cout--Derived--\n; } };int main() {Base1 obj1,*ptr1; Base2 obj2,*ptr2; Derived obj3; ptr1obj1; ptr1-fun(); ptr2obj2; ptr2-fun(); ptr1obj3; ptr1-fun(); ptr2obj3; ptr2-fun(); return 0; }运行结果 –Base1– –Base2– –Derived– –Base2– 6、写出下列程序的结果 class A { public:void FuncA(){printf( FuncA called\n );}virtual void FuncB(){printf( FuncB called\n );} }; class B : public A { public:void FuncA(){A::FuncA();printf( FuncAB called\n );}virtual void FuncB(){printf( FuncBB called\n );} }; void main( void ) {B b;A *pa;pa b;A *pa2 new A;pa-FuncA(); 3 pa-FuncB(); 4pa2-FuncA(); 5pa2-FuncB();delete pa2; }keyFuncA called FuncBB called FuncA called FuncB called 解析 B b; A *pa; pa b; A *pa2 newA; pa-FuncA(); 3//pab动态绑定但是FuncA不是虚函数所以FuncA called pa-FuncB(); 4//FuncB是虚函数所以调用B中FuncBFuncBB called pa2-FuncA(); 5//pa2是A类指针不涉及虚函数调用的都是A中函数所以FuncA called FuncB called pa2-FuncB() 7、写出下列程序的结果 class Base {public:Base(int j): i(j) {}virtual~Base() {}void func1() {i * 10;func2();}int getValue() {return i;}protected:virtual void func2() {i;}protected:int i; }; class Child: public Base {public:Child(int j): Base(j) {}void func1() {i * 100;func2();}protected:void func2() {i 2;} }; int main() {Base * pb new Child(1);pb-func1();cout pb-getValue() endl; delete pb; } key:12 Base * pb new Child(1) 首先创建子类对象初始化为1 func1()不是虚函数所以pb-func1()执行的是基类的func1函数i 10然后调用func2()函数 这里的func2是虚函数要往下派生类寻找找到后执行派生类中的func2(),此时i 12 最后执行pb-getValue(),结果为12 三、简答题 什么是多态虚函数的实现原理是什么? 主要是两个1. 隐藏实现细节使得代码能够模块化扩展代码模块实现代码重用 接口重用为了类在继承和派生的时候保证使用家族中任一类的实例的某一属性时的正确调用。 不能设置为虚函数的函数有哪些构造函数能设置为虚函数吗为什么 不能设置为虚函数的函数有 (1)普通函数非成员函数 (2)友元函数 (3)构造函数 (4)静态成员函数 (5)内联函数 构造函数不能被设置为虚函数 1构造函数发生的时机在编译阶段虚函数发生的时机在运行阶段 2构造函数不能被继承虚函数可以被继承 3如果将构造函数设置为虚函数那么就需要通过虚表找到虚函数的入口地址那么就需要虚函数指针指向虚表而虚函数指针存在对象布局的最前面而如果构造函数不调用那么对象就不一定是完整的那么对象的存储布局的前面就不一定有虚函数指针那如果没有虚函数指针就不能指向虚表。 在什么情况下析构函数要设置成虚函数为什么 为了解决内存泄漏的问题所以需要将析构函数设置为虚函数。 什么是纯虚函数什么是抽象类抽象类的作用是什么 答抽象类是含有纯虚函数的类其作用是作为多个表象不同但本质相同类的抽象。 故抽象类仅可以作为基类被继承不可以实例化生成对象不能初始化不能被当做返回值不能当做参数但可以做指针类型和引用 什么是重载什么是隐藏什么是覆盖他们之前的区别是 答成员函数被重载特征是 1相同的范围在同一个类中 2函数名字相同 3参数不同 4virtual 关键字可有可无 覆盖就是指派生类函数覆盖基类virtual函数特征是 1不同的范围分别位于派生类与基类 2函数名字相同 3参数相同 4基类函数必须有virtual 关键字 “隐藏”是指派生类的函数屏蔽了与其同名的基类函数派生对象都是调用派生类的同名函数。规则如下 1如果派生类的函数与基类的函数同名但是参数不同此时不论有无virtual关键字、基类的函数将被隐藏; 2如果派生类的函数与基类的函数同名并且参数也相同、但是基类函数没有virtual 关键字此时基类的函数被隐藏注意别与覆盖混淆 总结 ①同一类中的同名函数是重载 ②不同类中同名函数可能是覆盖也可能是隐藏。根据是否有virtual以及函数参数是否相同区分
http://www.w-s-a.com/news/602924/

相关文章:

  • 南宁企业网站建设制作芜湖网站建设推广
  • 泉州市建设局网站公示深圳建站公司好坏
  • 如何搭建网站教程一个人制作网站
  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司
  • 做推广可以上那些网站网页游戏排行榜2014前十名
  • 国外网站备案流程企业网站 流程
  • 重庆网站建设letide童程童美少儿收费价目表
  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写
  • 自己可以接单做网站吗wordpress 添加自定义按钮
  • 网站首页权重宣传页制作
  • 智能网站建设软件有哪些方面网页的建设
  • 石铜路网站建设生鲜电商网站开发
  • 怎么提高网站加载速度慢网站的轮播怎么做的
  • 网络网站推广优化建筑工程教育网官方网站