欢迎来到@自由技艺 的 C++ 系列专题。今天我们来一起认识下 C++ 中的几个关键字:default、delete、constexpr 和 explicit.
1 default 关键字
先来看下面这个例子:
上述代码块中,类 Person 中定义了带参数的构造函数,而在 main 函数中 new 一个 Person 对象时,使用的是默认构造函数。很显然,这种用法会报错的。
再看下述代码:
默认构造函数用 default 修饰之后,在 main 函数中就可以调用它了。
用法
如果类中定义了有参数的构造函数,编译器就不会再生成默认构造函数了。
当在外部创建类对象时,如果调用无参数的构造函数就会出错,因为类中没有无参构造函数。
可以通过 default 关键字修饰默认构造函数,而且该函数比用户自定义的默认构造函数代码效率更高。
2 delete 关键字
记住一点即可:阻止编译器合成函数
上述代码中,默认构造函数被 delete 修饰了,那么该函数就不可用了,可以简单理解为编译器没有生成该函数。
3 constexpr 关键字
在 C++ 中,constexpr 关键字用于标记常量表达式,表示这个表达式在编译时就能计算出结果,而不是在运行时计算。这使得程序在某些情况下可以更高效,因为编译器可以优化代码,避免在运行时计算。
4 explicit 关键字
在 C++ 中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++ 新增了关键字 explicit,用于关闭这种自动特性。也就是说,被 explicit 关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。
被 explicit 修饰的构造函数不能进行隐式类型转换
温馨提示:答案为网友推荐,仅供参考