C++面试考点
整理一些面试时可能会问到的C++问题和比较基础但容易混淆的问题
++i
和 i++
i++
是先赋值再自加
1 |
|
output
1 |
|
++i
是先自加再赋值
1 |
|
output
1 |
|
- 总结
++
在 i
前面的时候就是先自加,后赋值。
++
在 i
后面的时候就是先赋值,后自加。
typedef的三种用法
typedef
在C/C++ 是用来重命名的关键字。
1、当你不想用极长的一段代码来定义一个数据类型是,可用此来重新命名,如下:
1 |
|
以此方式,后面在遍历查找增加删除等操作时便方便了许多。
1 |
|
2、结构体的typedef
在C/C++ 中,特别是C语言中,结构体的定义时typedef非常广泛
1 |
|
这样定义,则 CARATTR
表示 struct _CARATTR
的一个对象,pCARATTR
表示 CARATTR
的一个指针。但是,这种方式仅限于C语言,C++似乎并不需要这样加一个typedef这样做。
3、函数指针的定义,特别用于回调函数与导出函数。
回调函数,按照我的理解,另一个线程中需要执行的函数或方法,只是函数体的代码实现在本线程中。例如:一个车辆扫描器,一直在循环的工作,查找是否当前范围内有车辆进过。这就是一个线程。当有车辆进过时,在此线程中执行一个动作。这个动作是什么呢?便是我们调用者传过去的一个函数地址。此函数地址指向我们的程序的一个函数。这就是所谓的“函数体的代码实现在本线程中”。
在传入函数地址时,在两个线程中都要定义此函数类型。定义方式如下:
1 |
|
第一个 typename
是函数返回类型,后面的 typename1
, typename2
表示函数的参数类型。导出函数的使用方法也是同样的。
参考连接
C++ 方法名前加~是什么意思?
意思是该函数为析构函数 也就是说 该类对象在生存期结束的时候会自动调用的一个函数
1 |
|
C++提供构造函数来处理对象的初始化。 1. 构造函数是一种特殊的成员函数,不需要用户来调用,定义对象时被自动执行。 2. 构造函数名字与类名相同,无返回类型。 3. 可以由用户自己定义实现,根据需要设计对数据成员进行初始化,依旧可以设置函数的默认参数。 4. 如果我们没有定义构造函数,系统会为我们自动定义一个无参的默认构造函数的,它不对成员属性做任何操作,如果我们自己定义了构造函数,系统就不会为我们创建默认构造函数了。
系统会默认的提供一个析构函数。在对象的生命周期结束的时候,程序就会自动执行析构函数来完成这些工作。同构造函数,用户可以自己定义析构函数,系统自动调用。 1. 析构函数没有返回值,没有参数; 2. 没有参数,所以不能重载,一个类仅有一个析构函数; 3. 析构函数除了释放工作,还可以做一些用户希望它做的一些工作,比如输出一些信息。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!