c++——基本概念

  1. 如何理解c/c++中的指针?每种编程语言都使用指针,但Java、c#等将指针隐藏,而c/c++将指针暴露给了用户(程序员)https://www.cnblogs.com/gxcdream/p/4805612.html
  2. 如何理解符号表?记录变量名及变量对应的地址。在编译时生成,生成后不可改
  3. c++中的内存有哪几种?如何分配?存储什么内容?静态存储区、栈存储区、堆存储区。静态存储区在编译时分配,在程序的整个运行期间都存在,存储全局变量、static变量;栈区函数执行时分配,在函数运行期间存在,存储函数中的临时变量;堆区由程序员自己分配,自己删除
  4. 栈内存和堆内存的区别?栈内存保存堆内存的地址,堆内存保存真正数据
  5. 内存中供用户使用的存储空间划分为哪几部分,分别存储什么类型的变量?程序区、静态存储区(全局变量)、动态存储区(函数形参、自动变量等)
  6. 成员变量(Fields)、参数(parameter)和本地变量(Local Variable)的区别?参数和本地变量相同,存储在栈中。成员变量在类中定义,本地变量在函数中定义。作用域:成员变量在类的所有函数中都可直接用,本地变量在本函数中使用;生命周期:成员变量在对象的生成期中永远存在,本地变量随函数存在。(成员变量在类的每个对象中,一般为私有,不能通过.访问)
  7. 变量和函数在声明时的两个属性是什么?数据类型(整型、字符型),数据存储类别(在内存中存储方式,分静态、动态两类,根据存储类别可知变量的作用域与生存期)
  8. 变量根据生存周期可分为哪两类?静态(程序运行期间由系统分配固定的存储空间)、动态(程序运行期间根据需要动态分配存储空间)
  9. 初始化和赋值的区别?初始化指在创建变量时赋予其一个初值,赋值指把对象的当前值擦除,以一个新值代替之
  10. .h文件和.cpp文件的区别?https://zhidao.baidu.com/question/554429813.html
  11. c++中作用域如何分隔?以“{}”分隔
  12. ::是什么意思?域解析符(也称作用域运算符或作用域限定符),用来连接类名和函数名,指明当前函数属于哪个类
  13. ->的含义?取成员,通过结构体(类)指针取得结构体(类)的成员(可读成“的”)
  14. &和*的含义?由上下文决定。在声明语句中,&为引用,*为指针;在表达式中,&为取地址,*为解引用
  15. 介绍c++中两种主要的复合类型及其区别?引用、指针。引用与变量绑定,不是对象(一旦绑定,无法改变),必须初始化(引用是某块内存的别名,程序不会为引用分配内存);指针指向,是对象(允许赋值、拷贝),可以不初始化(指针指向一块内存,其内容是所指内存的地址)。
  16. 指针的使用有何注意事项?未经初始化的指针会引发错误,尽量等定义了对象后再定义指向它的指针
  17. 如何理解c++的分离式编译机制?将变量的声明定义分离的机制。声明规定了变量的类型和名字,即使一个名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。定义则负责创建与名字关联的实体,以及申请存储空间。将声明和定义分离,可方便将程序分为许多文件,并在文件中共享代码
  18. int (*p)(int,int)与int *p(int,int)的区别?前者为函数指针,p是指向函数入口地址的指针变量(地址);后者为指针函数,*表示函数p的返回值是指向整型变量的指针
  19. int (*p)[4]与int *p[4]的区别?前者为数组指针,p为指向一维数组的指针变量(地址);后者为指针数组,*代表数组p的每个元素均为指向整型变量的指针
  20. int p[4]与int (*p)[4]中p的区别?前者中p为数组首元素地址;后者中*p为数组首元素地址,p为双重指针
  21. 数组名和函数名各代表什么?数组名代表数组首元素的地址,函数名代表函数的入口地址
  22. 什么是虚函数?通过指针调用派生类的成员函数,实现多态
  23. 句柄和指针的区别?https://blog.csdn.net/perfectguyipeng/article/details/71189822
  24. 函数的参数传递有哪两种机制?引用传递(passed by reference)、值传递(passed by value)。形参为引用类型时,形参
  25. 什么是函数模板?合并名字相同,参数不同的函数,方便实现函数重载和泛型
  26. 程序错误有哪几类,如何避免?语法错误(编译)、逻辑错误(调试)、运行错误(异常机制)
  27. 创建对象有哪两种机制,有什么区别?https://www.cnblogs.com/techyc/p/3257575.html
  28. 对象的创建包含哪两个阶段?1、分配内存;2、初始化(调用构造函数)
  29. 多态的实现方式:函数重载、运算符重载、虚函数。前两种编译时实现,后一种在运行时实现
  30. 什么是宏?一种替换机制(批处理),在预处理阶段展开,程序随之变长
  31. C/C++的预处理功能有哪几种?宏定义,文件包含,条件编译(满足条件了才编译)
  32. 什么是构造函数?用于对象初始化,创建对象时自动调用,没有返回值
  33. 什么是析构函数?与构造函数相对,销毁对象时系统自动调用。进行清理工作,例如释放分配的内存、关闭打开的文件等。没有参数和返回值
  34. 什么是内联函数,如何声明?为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。可将短小的、频繁调用的函数声明为内联函数。声明函数时加关键字inline
  35. 什么是局部变量和外部变量,如何声明?static,extern
  36. 什么是内部函数和外部函数,如何声明?二者区别:能否被其他文件调用。内部函数:只能被本文件中的其他函数所调用,即作用域仅局限于所在文件。通过static声明;外部函数:可被其他文件调用。通过extern声明(默认)
  37. 函数的声明和定义在语法上如何区分?声明没有{}
  38. extern在c++中有什么用法?(https://www.cnblogs.com/broglie/p/5524932.html)为方便分离式编译,如果想声明一个变量而非定义它,就在变量名前添加extern关键字。将一个变量声明为extern就表示承诺在程序的其他位置有该变量的一个非extern定义。一个给定的变量可能有多个extern声明,但必须只有一个定义
  39. struct和class的区别?https://www.cnblogs.com/ccsccs/articles/4025215.html
  40. include" "和< >的区别?前者在.cpp所在目录找,后者在系统目录找
  41. 类的组成?成员变量和成员函数,类不是实体,只有实体才有变量,变量是属于对象的,不属于类,函数是属于类的,不属于对象。所有类的对象用到的函数是同一个,而类的变量只有创建对象时才会产生。当不同的对象调用同一个函数的时候,编译器可以知道是哪个对象在调用它,并把变量与之关联上(通过this实现)
  42. 创建对象的两种方式?有什么区别?在栈上创建和在堆上创建。在栈上创建对象使用“类名 对象名”创建,对象在离开作用域后自动删除,使用"."访问对象的的方法;在堆上创建的对象使用“类名 对象地址 = new 类名”创建,对象需使用delete手动删除,使用"->"访问对象的方法    https://www.cnblogs.com/techyc/p/3257575.html
  43. 什么是对象?一块能存储数据并具有某种类型的内存空间
  44. 基本内置类型包括哪几类?算数类型(又分为字符、整型、布尔、浮点)和空类型
  45. 声明语句的组成?基本数据类型+声明符
  46. const的用途?修饰变量,以说明它是不可变的
  47. 函数由哪几部分构成?返回类型、函数名字、形参列表、函数体
  48. 什么是函数重载?同一作用域内的几个函数名字相同但形参列表不同
  49. VS、VC、MFC是什么?VS >VC >MFC 微软基础类库(Microsoft Foundation Classes)
  50. 什么是MSDN?微软开发者网络(Microsoft Developer Network),VS的帮助文档
  51. 什么是GDI?图形装置界面(Graphic Device Interface)
  52. 如何理解设备描述表?https://blog.csdn.net/wenzhou1219/article/details/22325247

猜你喜欢

转载自www.cnblogs.com/cxc1357/p/10440988.html