zoukankan      html  css  js  c++  java
  • C++笔试、面试题总结

    1、static有什么用途

      静态局部变量,静态局部变量的生存期为整个源程序,但是只在定义它的函数体内起作用,若有多个函数体同时用到了此变量,再次调用时会保留前次留下的值。(设置变量的存储域)

      静态全局变量,静态全局变量的作用域是当前源文件,而非静态全局变量的作用域是整个源程序。(限制变量的作用域)

      静态函数,用static声明的函数为静态函数,也称内部函数,静态函数的作用域为当前文件,程序中,默认为外部函数(即extern文),静态函数需显示定义。(限制函数的作用域)

      类静态成员函数,不属于该类申请的任何一个对象,而是所有该类成员共同共有的一个函数,没有this指针,只能访问静态数据成员。(限制函数的访问域)。

    2、引用和指针有什么区别?

      引用是一段存储空间的别名。而指针需要分配自身空间,其自身是指向某段内存空间的地址。

      引用必须被初始化,而且初始化之后不可更改。

    3、堆栈溢出是由什么造成的?

      没有回收垃圾

      层次太深的递归调用。

    4、C++中什么函数不能被声明为虚函数?

      普通函数、内联函数、构造函数、静态成员函数、友元函数。

    5、继承层次中,为什么基类析构函数是虚函数?

      当用基类类型的指针指向派生类对象时,如果基类析构函数不是虚函数,则用释放指针时,只调用基类的析构函数,派生类的析构函数无法调用,就会造成内存溢出。但是如果声明为虚函数,则释放指针时,先调用派生类的析构函数,再回调基类的析构函数。

    6、为什么构造函数不能是虚函数?

      从实现上来看,虚表是在建立构造函数之后,建立的,故不能将构造函数设置为虚函数。

      从内存上来看,虚函数表其实是存储在对象的内存空间的,如果构造函数是虚的,就需要通过vtable来调用,可是对象空间还没有分配,无法找到vtable,所以构造函数不能是虚函数。

    7、公有继承、受保护继承、私有继承

      公有继承,派生类对象可以访问基类中的公有成员,派生类的成员函数可以访问基类中的公有和受保护成员,基类受保护的成员,可以通过派生类对象访问但不能修改。

      私有继承,基类的成员只能被直接派生类的成员访问,无法再往下继承;

      受保护继承时,基类的成员也只能被直接派生类的成员访问,无法再往下继承。

    8、有哪几种情况只能用构造函数初始化列表而不能用赋值初始化?

      const和引用成员变量。赋值是删除原值、赋予新值,而构造函数是先分配空间、再赋值,const和引用一经定义不能改变,所以不能被赋值,只能被初始化。

    9、C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private

      第一个问题:1)将类定义为抽象类;2)将构造函数声明为private;

      第二个问题:不允许类外创建类对象,只能在类内部创建对象;

    10、进程和线程的区别?

      进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

      进程中所包含的一个或多个执行单元称为线程(thread)。线程只能归属于一个进程并且它只能访问该进程所拥有的资源。

    11、进程间如何通信?

      

  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/guocm/p/3722447.html
Copyright © 2011-2022 走看看