C++基础复习提升-explicit那些事
参考C++那些事-光城大佬的网站
参考C++ explicit关键字详解
上一篇-C++基础复习提升-virtual那些事
下一篇-C++基础复习提升-常用写法类初始化列表
explicit 修饰构造函数时,可以防止隐式转换和复制初始化
explicit 修饰转换函数时,可以防止隐式转换,但按语境转换除外
//inline.h
#ifndef _A
class A {
public:
// 显示声明构造函数
explicit A(int x, int y = 0);
const int a;
int b;
};
#endif
//main.cpp
#include <iostream>
#include "inline.h"
using namespace std;
A::A(int x, int y) : a(x), b(y) {}
// const修饰后为常对象,不能对成员进行修改操作,只能访问
void display(const A &a) {
cout << a.b << " " << a.a << endl;
}
int main() {
// 加explict后,只能显示调用
display(A(1, 3));
// 隐式调用 display(1); 将int隐式转换为A
}