1.1 语言基础
1.1.1 简述下C++语言的特点
参考回答
- C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。
- C++有三大特性(1)封装。(2)继承。(3)多态;
- C++语言编写出的程序结构清晰、易于扩充,程序可读性好。
- C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;
- C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try—catch等等;
- C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL(Standard Template Library)。
- 同时,C++是不断在发展的语言。C++后续版本更是发展了不少新特性,如C++11中引入了nullptr、auto变量、Lambda匿名函数、右值引用、智能指针。
1.1.2 说说C语言和C++的区别
参考回答
- C语言是C++的子集,C++可以很好兼容C语言。但是C++又有很多新特性,如引用、智能指针、auto变量等。
- C++是面对对象的编程语言;C语言是面对过程的编程语言。
- C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而C++对此增加了不少新特性来改善安全性,如const常量、引用、cast转换、智能指针、try—catch等等;
- C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。C++的STL库相对于C语言的函数库更灵活、更通用。
1.1.3 说说 C++中 struct 和 class 的区别
参考回答
-
struct 一般用于描述一个数据结构集合,而 class 是对一个对象数据的封装;
-
struct 中默认的访问控制权限是 public 的,而 class 中默认的访问控制权限是 private 的,例如:
1
2
3
4
5
6
struct A{
int
iNum;
// 默认访问控制权限是 public
}
class
B{
int
iNum;
// 默认访问控制权限是 private
}
-
在继承关系中,struct 默认是公有继承,而 class 是私有继承;
-
class 关键字可以用于定义模板参数,就像 typename,而 struct 不能用于定义模板参数,例如:
-
C++ 中的 struct 是对 C 中的 struct 进行了扩充,它们在声明时的区别如下:
C C++ 成员函数 不能有 可以 静态成员 不能有 可以 访问控制 默认public,不能修改 public/private/protected 继承关系 不可以继承 可从类或者其他结构体继承 初始化 不能直接初始化数据成员 可以 -
使用时的区别:C 中使用结构体需要加上 struct 关键字,或者对结构体使用 typedef 取别名,而 C++ 中可以省略 struct 关键字直接使用,例如:
1
2
3
4
5
6
7
8
9
struct Student{
int
iAgeNum;
string strName;
}
typedef struct Student Student2;
//C中取别名
struct Student stu1;
// C 中正常使用
Student2 stu2;
// C 中通过取别名的使用
Student stu3;
// C++ 中使用