type conversion in C++

For primitive data type, C++ do implicit conversion.
```
#include <iostream>
using namespace std;

int main() {
  short a = 2000;
	int b = a;
	cout << b << endl;
}
```
For class, C++ support class conversion, assignment operator and conversion operator.
```
#include <iostream>
using namespace std;

class A {};

class B {
public:
  B(const A& a) {};
  B& operator=(const A& a) { return *this; }
  operator A() { return A();}
};

int main() {
  A a;
  B b(a);
  b = a;
  a = b;
}
```