C\C++ 基础知识点整理(二)

局部变量可以和全局变量重名吗?

  • 答:能够重名,若是局部变量和全局变量重名,则默认在函数中访问的相同标识符是表明局部变量,若是要访问全局变量,则能够在标识符前面加上::便可,::在此处表示要访问全局域中的标识符。

请简述extern关键字在C++语言中的做用?

  • 答:有两个做用,做用一是用于声明全局变量;做用二是告知C++编译器,某些函数是被C语言编译器编译出来的,这样C++就能经过正确的名称来连接C语言编译器编译出来的函数了。

请简述头文件包含中使用<>和""的不一样?

  • 答:<>是从编译系统设置的头文件搜索目录中搜索头文件,找不到就报错;""是先在工程所在目录中搜索头文件,找不到就再去编译系统设置的头文件搜索目录中搜索头文件,再找不到就报错。

请简述C++语言中struct和class的区别

  • 答:struct 的成员默认是公有的,而类的成员默认是私有的。struct和class在其余方面是功能相同的。通常约定俗成的规矩,若是一个复合数据类型仅仅包含一些公有成员变量而没有成员函数或仅仅是不多的成员函数,那么这个复合数据类型能够设置为struct,不然的话应该设置为class。

请说出const与#define相比有什么优点?

  • 答:const常量有数据类型,编译器能够对其进行类型安全检查,而宏仅仅是文本替换,没有“类型”;另外有些集成化的调试工具能够对const常量进行调试,可是不能对宏进行调试。

请简述面向对象的三个基本特征?

  • 答:封装,将客观事物抽象成类,每一个类对自身的数据和方法实行访问权限管理;继承,即子类自动拥有父类的全部成员变量和成员函数,保护、公有成员能够被子类成员函数访问,私有成员不能被子类成员函数访问;多态,简单地说就是经过相同的代码根据不一样状况调用不一样函数的过程,具体实现通常是父类指针指向子类对象调用子类对象的虚成员函数

请简述多态的做用?

  • 答:有两个做用,做用一是隐藏实现细节,使得代码可以模块化,扩展代码模块,实现代码重用;做用二是接口重用,为了类在继承和派生的时候,保证使用继承体系下任一类的实例的某一属性时的正确用

main 函数执行之前,还会执行什么代码?

  • 答:进程启动后,要执行一些初始化代码(如设置环境变量等),而后跳转到main执行。全局对象的构造也在main以前。

结构与联合有何区别?

  • 答:1)结构和联合都是由多个不一样的数据类型成员组成, 但在任何同一时刻, 联合转只存放了一个被选中的成员, 而结构的全部成员都存在。
    2)对于联合的不一样成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不一样成员赋值是互不影响的。

类A中没有任何成员变量与成员函数,这时sizeof(A)的值是多少,若是不是0,请解释一下编译器为何没有让它为0?

  • 答:确定不是零,举个反例,若是是零的话,声明一个class A[10]对象数组,而每个对象占用的空间是零,这时就没办法区分A[0]、A[1]…A[9]了。
相关文章
相关标签/搜索