本文主要会介绍:
-
implicit conversion
-
conversion operator
implicit conversion
有时候我们传入的参数并不是function想要的类型,但是依然可以运行,这是因为C++ compiler在底层悄悄帮我们进行了type conversion,比如:
class entity{
private:
int a;
public:
entity(int i): a(i){
}
};
void print(entity e){
...
}
int main(){
print(3);
}
可以看到,虽然print想要的是entity类型的参数,但是我们传入一个int也不会报错。这是因为compiler在底层悄悄帮我们调用了constructor entity(int i)将3转化成了entity type,然后传给了print()。
再看一个例子:
class entity{
private:
int age;
std::string name;
public:
entity(int a): age(a), name("unknown"){
}
entity(std::string n):