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

做搜狗pc网站优化点本科自考第二学位

做搜狗pc网站优化点,本科自考第二学位,莘县网站建设价格,北京建设厅网站首页说明#xff1a; 面试群#xff0c;群号#xff1a; 228447240面试题来源于网络书籍#xff0c;公司题目以及博主原创或修改#xff08;题目大部分来源于各种公司#xff09;#xff1b;文中很多题目#xff0c;或许大家直接编译器写完#xff0c;1分钟就出结果了。但…说明 面试群群号 228447240面试题来源于网络书籍公司题目以及博主原创或修改题目大部分来源于各种公司文中很多题目或许大家直接编译器写完1分钟就出结果了。但在这里博主希望每一个题目大家都要经过认真思考答案不重要重要的是通过题目理解所考知识点好应对题目更多的变化博主与大家一起学习一起刷题共同进步写文不易麻烦给个三连 前面1-15已经是C/C,但是由于前面写的比较混乱把八股文和题目混在了一起所以从这一篇开始重新整理重新写前面1-15也就可以选看了希望多多支持 1.C中struct和class的区别 答案 相同点 两者都拥有成员函数、公有和私有部分。 任何可以使用class完成的工作同样可以使用struct完成。 不同点 两者中如果不对成员不指定公私有struct默认是公有的class则默认是私有的。 class默认是private继承而struct模式是public继承。 引申C和C的struct区别 1. C语言中struct是用户自定义数据类型UDTC中struct是抽象数据类型ADT支持成员函数的定义C中的struct能继承能实现多态 2. C中struct是没有权限的设置的且struct中只能是一些变量的集合体可以封装数据却不可以隐藏数据而且成员 不可以是函数 3. C中struct增加了访问权限且可以和类一样有成员函数成员默认访问说明符为public为了与C兼容 4. struct作为类的一种特例是用来自定义数据结构的。一个结构标记声明后在C中必须在结构标记前加上struct才能做结构类型名除typedef struct class{};;C中结构体标记结构体名可以直接作为结构体类型名使用此外结构体struct在C中被当作类的一种特例 2.数组名和指针这里为指向数组首元素的指针区别 答案 二者均可通过增减偏移量来访问数组中的元素。 数组名不是真正意义上的指针可以理解为常指针所以数组名没有自增、自减等操作。 当数组名当做形参传递给调用函数后就失去了原有特性退化成一般指针多了自增、自减操作 但 sizeof 运算符不能再得到原数组的大小了。 3.final和override关键字 答案 override 当在父类中使用了虚函数时候你可能需要在某个子类中对这个虚函数进行重写以下方法都可以 class A {virtual void foo(); } class B : public A {void foo(); //OKvirtual void foo(); // OKvoid foo() override; //OK } 如果不使用override当你手一抖将 foo()写成了 f00()会怎么样呢结果是编译器并不会报错因为它并不知道你的目的是重写虚函数而是把它当成了新的函数。如果这个虚函数很重要的话那就会对整个程序不利。所以override的作用就出来了它指定了子类的这个虚函数是重写的父类的如果你名字不小心打错了的话编译器是不会编译通过的。 final 当不希望某个类被继承或不希望某个虚函数被重写可以在类名和虚函数后添加final关键字添加final关键字后被继承或重写编译器会报错。 class Base {virtual void foo(); }; class A : public Base {void foo() final; // foo 被override并且是最后一个override在其子类中不可以重写 }; class B final : A // 指明B是不可以被继承的 {void foo() override; // Error: 在A中已经被final了 }; class C : B // Error: B is final { }; 4.拷贝初始化和直接初始化 答案 当用于类类型对象时初始化的拷贝形式和直接形式有所不同直接初始化直接调用与实参匹配的构造函数拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对象然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。 string str1(I am a string);//语句1 直接初始化 string str2(str1);//语句2 直接初始化str1是已经存在的对象直接调用构造函数对str2进行初始 化 string str3 I am a string;//语句3 拷贝初始化先为字符串”I am a string“创建临时对象 再把临时对象作为参数使用拷贝构造函数构造str3 string str4 str1;//语句4 拷贝初始化这里相当于隐式调用拷贝构造函数而不是调用赋值运算符 函数 为了提高效率允许编译器跳过创建临时对象这一步直接调用构造函数构造要创建的对象这样就完全等价于直接初始化了语句1和语句3等价但是需要辨别两种情况。 当拷贝构造函数为private时语句3和语句4在编译时会报错使用explicit修饰构造函数时如果构造函数存在隐式转换编译时会报错 5.野指针和悬空指针 答案 都是是指向无效内存区域(这里的无效指的是不安全不可控)的指针访问行为将会导致未定义行为。 野指针 指的是没有被初始化过的指针 。 因此为了防止出错对于指针初始化时都是赋值为 nullptr这样在使用时编译器就会直接报错 产生非法内存访问。 悬空指针 指针最初指向的内存已经被释放了的一种指针。  产生原因及解决办法 野指针指针变量未及时初始化 定义指针变量及时初始化要么置空。 悬空指针指针free或delete之后没有及时置空 释放操作后立即置空。 6.C中的重载、重写覆盖和隐藏的区别 答案 1重载overload 重载是指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同参数类型和数目有所不同不能出现参数个数和类型均相同仅仅依靠返回值不同来区分的函数。重载和函数成员是否是虚函数无关。 2重写覆盖override 重写指的是在派生类中覆盖基类中的同名函数 重写就是重写函数体 要求基类函数必须是虚函数且 与基类的虚函数有相同的参数个数 与基类的虚函数有相同的参数类型 与基类的虚函数有相同的返回值类型 3隐藏hide 隐藏指的是某些情况下派生类中的函数屏蔽了基类中的同名函数包括以下情况 两个函数参数相同但是基类函数不是虚函数。 和重写的区别在于基类函数是否是虚函数。    两个函数参数不同无论基类函数是不是虚函数都会被隐藏。和重载的区别在于两个函数不在  同一 个类中。 7.mutable和explicit关键字的用法 答案 mutable mutable的中文意思是“可变的易变的”跟constant既C中的const是反义词。在C中mutable也是为了突破const的限制而设置的。被mutable修饰的变量将永远处于可变的状态即使在一个const函数中。我们知道如果类的成员函数不会改变对象的状态那么这个成员函数一般会声明成const的。但是有些时候我们需要 在 const 函数里面修改一些跟类状态无关的数据成员那么这个函数就应该被 mutable 来修饰并且放在函数后后面关键字位置。 explicit explicit关键字用来修饰类的构造函数被修饰的构造函数的类不能发生相应的隐式类型转换只能以 显示的方式进行类型转换注意以下几点 explicit 关键字只能用于类内部的构造函数声明上explicit 关键字作用于单个参数的构造函数被explicit修饰的构造函数的类不能发生相应的隐式类型转换 8.什么情况下会调用拷贝构造函数 答案 用类的一个实例化对象去初始化另一个对象的时候函数的参数是类的对象时非引用传递函数的返回值是函数体内局部对象的类的对象时 ,此时虽然发生Named return Value优化NRV优化但是由于返回方式是值传递所以会在返回值的地方调用拷贝构造函数 9.形参与实参的区别 答案 1) 形参变量只有在被调用时才分配内存单元在调用结束时 即刻释放所分配的内存单元。因此形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 2) 实参可以是常量、变量、表达式、函数等 无论实参是何种类型的量在进行函数调用时它们都必须具有确定的值 以便把这些值传送给形参。 因此应预先用赋值输入等办法使实参获得确定值会产生一个临时变量。 3) 实参和形参在数量上类型上顺序上应严格一致 否则会发生“类型不匹配”的错误。 4) 函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参而不能把形参的值反向地传送给实参。 因此在函数调用过程中形参的值发生改变而实参中的值不会变化。 5) 当形参和实参不是指针类型时在该函数运行时形参和实参是不同的变量他们在内存中位于不同的位置形参将实参的内容复制一份在该函数运行结束的时候形参被释放而实参内容不会改变。 10.值传递、指针传递、引用传递的区别和效率 答案 1) 值传递有一个形参向函数所属的栈拷贝数据的过程如果值传递的对象是类对象 或是大的结构体对象将耗费一定的时间和空间。传值 2) 指针传递同样有一个形参向函数所属的栈拷贝数据的过程但拷贝的数据是一个固定为4字节的地址。传值传递的是地址值 3) 引用传递同样有上述的数据拷贝过程但其是针对地址的相当于为该数据所在的地址起了一个别名。传地址 4) 效率上讲指针传递和引用传递比值传递效率高。一般主张使用引用传递代码逻辑上更加紧凑、清晰。 11.delete p、delete [] p、allocator都有什么作用 答案 1、 动态数组管理new一个数组时[]中必须是一个整数但是不一定是常量整数普通数组必须是一个常量整数 2、 new动态数组返回的并不是数组类型而是一个元素类型的指针 3、 delete[]时数组中的元素按逆序的顺序进行销毁 4、 new在内存分配上面有一些局限性new的机制是将内存分配和对象构造组合在一起同样的 delete也是将对象析构和内存释放组合在一起的。allocator将这两部分分开进行allocator申请一部分内存不进行初始化对象只有当需要的时候才进行初始化操作。 12.malloc申请的存储空间能用delete释放吗? 答案 不能malloc /free主要为了兼容Cnew和delete 完全可以取代malloc /free的。 malloc /free的操作对象都是必须明确大小的而且不能用在动态类上。 new 和delete会自动进行类型检查和大小malloc/free不能执行构造函数与析构函数所以动态对象它是不行的。 当然从理论上说使用malloc申请的内存是可以通过delete释放的。不过一般不这样写的。而且也不能保证每个C的运行时都能正常。
http://www.zqtcl.cn/news/322514/

相关文章:

  • 目前我们的网站正在建设中做网站违反广告法
  • 有没有做美食的规模网站怎么做国外的网站吗
  • 竭诚网络网站建设开发杭州百度推广
  • 怎样购买起名软件自己做网站小程序制作收费
  • 制作企业网站欢迎界面素材cuntlove wordpress
  • 适合建设网站的国外服务器人工智能培训机构
  • 怎么套网站潜江资讯网招聘信息
  • 网站建设 微信公众号建设网站需要
  • 做房产经纪的那些网站可以进客网站关键词排名如何做
  • 网站建设实验总结百科wordpress 前台插件
  • 招聘网站建设销售成都 网站建设
  • 手机选择网站wordpress捐赠按钮
  • 网站建设上动漫制作教学
  • 怎么用cms做网站计算机网络技术专业
  • 建设部颁发的证书网站请问注册公司怎么注册
  • 网站开发php和c语言区别网站开发教程大全
  • 建设银行通控件网站谷歌推广
  • 我要建网站需要什么付费wordpress
  • 网站收录查询情况wordpress主题仿
  • 网站单页生成器c 网站开发需要学什么
  • 什么网站是免费的免费图片链接生成器
  • 网站建设伍金手指下拉9服务器多少钱
  • 手机网站大全网站收费网站推广
  • 华企立方做网站自己动手做导航网站
  • 如何建设教师网上授课网站重庆建设网站哪家专业
  • 企业网站页头背景图建设三轮摩托车官网
  • 直播网站创做上海idc机房托管
  • 受欢迎自适应网站建设地址c2c二手车交易平台
  • 做个平台网站怎么做房价查询
  • 自学网站建设最快要多久asp.net 手机网站开发