C++关键字explicit有什么作用?
C++关键字explicit作用分析:
用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示,什么又是隐式的呢?
如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。
/*************************************************************************
> File Name: 8.3.explicitfoo.cpp
> Author:
> Mail:
> Created Time: Mon Jul 26 18:02:25 2021
************************************************************************/
#include<stdio.h>
#include<iostream>
using namespace std;
class Myclass {
public:
explicit Myclass(int num) : m_num(num) {
printf("constructor num = %d\n", num);
}
// explicit:
// 1> 只能在类的内部声明使用,而不能在类的外部声明;
// 2> 只能修饰一个参数的构造函数。对于多个参数的构造函数无任何意义;
// 3> 声明了之后,就不允许隐式转换!
// explicit 修饰多个参数构造函数无任何意义!
explicit Myclass(int i, float f, double d) {
printf("constructor i = %d, f = %f, d = %lf\n", i, f, d);
}
private:
int m_num;
};
int main(void) {
Myclass obj1 = (Myclass)100.123;
Myclass obj2(int(200));
Myclass obj3(100.123, 200.123f, 300.123);
Myclass obj4('a', 200.123f, 300.123);
return 0;
}
代码截图:
运行结果:
本文来自博客园,作者:skyuz,转载请注明原文链接:https://www.cnblogs.com/skyzu2333/p/15063565.html