C++隐式转换

来源:互联网 发布:淘宝店铺关闭重新开 编辑:程序博客网 时间:2024/04/27 19:44
#include <iostream>using namespace std;class A{int a;public:A(int n):a(n){cout << "Constructor!" << endl;}~A(){cout << "Destructor!" << endl;}};int main(){A a = 10;return 0;}


程序输出:

Constructor!

Destructor!


A a = 10;这种语法是通过的,为什么?因为发生了构造函数的隐式转换,隐式转换这种规则允许用一个参数来初始化对象,这会调用类中带有一个参数的构造函数,这个参数也可以有默认值  只要有一个参数就行。


另外,加上explicit关键字,可以消除这样的隐式转换在上面的构造函数前面加上explicit关键字,会发现编译失败!


5 0