#include "stdafx.h" #include <iostream> #include <string> using namespace std; class A { public: int iNum; A(){} explicit A( class B& b); // 用exlicit 显示初始化 //A( class B& b); }; class B { public: int iNum; double dNum; B(){} operator A() { A a; a.iNum = this->iNum; cout<<"World !"<<endl; return a; } operator double() { return 1.0; } B& operator = (double const d) { this->dNum = d; return *this; } }; A::A(B& b) { this->iNum = b.iNum; cout<<"Hello "<<endl; } void aa(A asd){} int main() { B b; b.iNum = 100; double d = b; d = b; b = d; //A a( b ); //aa(b); A a = b; cout<<a.iNum<<endl; system("PAUSE"); return 0; } // 隐式转换1 #include <iostream> #include <string> using namespace std; class B { public: int iNum; }; class A { public: int iNum; A( const B &b ) { iNum = b.iNum; } /*A& operator = ( const B& b) { this->iNum = b.iNum; return *this; }*/ }; int main() { B b; b.iNum = 100; A a(b); cout<<a.iNum; system("PAUSE"); return 0; } // 隐式转换2 #include <iostream> #include <string> using namespace std; class B { public: int iNum; }; class A { public: int iNum; /*A( const B &b ) { iNum = b.iNum; }*/ A& operator = ( const B& b) { this->iNum = b.iNum; return *this; } }; int main() { B b; b.iNum = 100; A a; a = b; cout<<a.iNum; system("PAUSE"); return 0; }