一、C++的隐式装换进行类型转换
#include<iostream>
using namespace std;
class A
{
public:
A(int x):x(x)
{
this->x=x;
cout<<"构造A"<<this->x<<endl;
}
A(A&a)
{
cout<<"copy"<<endl;
}
void print()
{
cout<<this->x<<endl;
}
private:
int x;
};
void main()
{
A a(20);
a=100;
a.print();
}
重点:在使用a=100的时候我们返现调用了构造函数,这就是隐式的调用了构造函数进行类型转换。
二、使用关键字explicit可以避免隐式转换
#include<iostream>
using namespace std;
class A
{
public:
explicit A(int x)
{
this->x=x;
cout<<"构造A"<<this->x<<endl;
}
A(A&a)
{
cout<<"copy"<<endl;
}
void print()
{
cout<<this->x<<endl;
}
private:
int x;
};
void main()
{
A a(20);
a=100;
a.print();
}
重点:这样调用就会报错,因为使用了关键字 explicit关键字后就不能进行隐式的装换,只能使用显示的调用。
可以使用 a=A(100)。