C++面试宝典(一)

本文详细介绍了C++语言的基础知识,包括C++与C语言的区别、struct和class的不同、头文件的包含规则、C++中struct和class的使用、静态关键字的作用、数组与指针的区别、函数指针的定义和应用场景,以及C++中的各种传值方式。内容深入浅出,适合C++面试准备。
摘要由CSDN通过智能技术生成

1.1语言基础

1.1.1简述下C++语言的特点

参考回答

        1.C++在C语言基础上引入面向对象的机制,同时也兼容C语言。

        2.C++有三大特点(1)封装,(2)继承,(3)多态。

        3.C++语言编写出的程序结构清晰,易于扩充,程序可读性好;

        4.C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;

        5.C++更加安全,增加了const常量,引用,四类cast转换(static_cast,dynamic_cast,const_cast,reinterpret_cast)、智能指针、try—catch等;

        6.C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL(Standard Template Library)。

        7.同时,C++是不断在发展的语言。C++后续版本更是发展了不少特性,如C++11中引入了nullptr,auto变量、Lanbda匿名函数,右值引用、智能指针。

1.1.2说说C语言和C++的区别

参考回答

        1.C语言是C++的子集,C++可以很好的兼容C语言。但是,C++又有很多新特性,如引用、智能指针、auto变量等。

        2.C++是面向对象的编程语言;C语言是面向过程的编程语言。

        3.C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性,内存泄漏等。而C++对此增加了不少新特性来改善安全性,如const常量,引用、cast转换、、智能指针、try—catch等;

        4.C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。C++的STL库相对于C语言的函数库更灵活、更通用。

1.1.3说说C++中struct和class的区别

参考回答

        1.struct一般用于描述一个数据结构集合,而class是对一个对象数据的封装;

        2.struct中默认的访问控制权限是public的,而class中默认的访问控制权限是private的,例如:

struct A{
    int iNUM;//默认访问控制权限是public
}
class A{
    int iNUM;//默认访问控制权限是private
}

        3.在继承关系中,struct默认是公有继承,而class是私有继承;

        4.class关键字可以用于定义模板参数,就像typename,而struct不能用于定义模板参数,例如:

template<typename T,typename Y>//可以吧typename换成class
int Func(const T& t,const Y& y)
{//todo}

答案解析

        1.C++中的struct是对C中的struct进行了扩充,他们在声明时的区别如下:

C     C++
成员函数 不能有 可以有
静态成员 不能有 可以有
访问控制 默认public,不能修改 默认public,可以为private、protected
继承关系 不可以继承 可以从类或其他结构体继承
初始化 不能直接初始化数据成员 可以

        2.使用时的区别:C中使用结构体需要加上struct关键字,或者对结构体使用typedef取别名,而C++中可以省略struct关键字直接使用,例如:

struct Student{
    int iAgeNum;
    string strName;
}typedef struct Student Student2;//C中取别名
struct Student stu1;//C中正常使用
Student2 stu2;//C中通过取别名使用
Student stu3;//C++中使用

1.1.4说说include头文件的顺序以及双引号""和尖括号<>的区别

参考答案

        1.区别:

                (1)尖括号<>的头文件是系统文件,双引号""的头文件是自定义文件。

                (2)编译器预处理阶段查找头文件的路径不一样。

        2.查找路径:

                (1)使用尖括号<>的头文件的查找路径:编译器设置的头文件路径-->系统变量。

                (2)使用双引号""的头文件的查找路径:当前头文件目录-->编译器设置的头文件路径-->系统变量。

1.1.5说说C++结构体和C结构体的区别

参考回答

区别:(1)C的就狗腿内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。

           (2)C的结构体对内部成员变量的访问权限只能是public,而C++允许public、protected、private三种。

           (3)C语言的结构体不允许继承,C++的结构体可以从其他结构体或类继承。

           (4)C语言中使用结构体需要struct关键字,或者对结构体使用typedef取别名,而C++中可以省略struct关键字直接使用。

答案解析同1.1.3

1.1.6导入C语言的关键字是什么,C++编译时和C有什么不同?

        参考回答

                (1)关键字:在C++中,导入C函数的关键字是extern,表达形式是extern“C”,external“C”的主要作用就是为了正确实现C++代码调用其他C语言代码。加上extern“C”后,会指示编译器这部分代码按照C语言进行编译,而不是C++;

                   (2)编译区别:由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言不正支持函数重载,因此编译C语言代码时不会带上函数的参数类型,一般只包括函数名。

答案解析

//extern示例
//在C++程序里边声明该函数,会指示编译器这部分代码按
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值