演示隐式转换实例 vs2013
#include<iostream>
using namespace std;
class Person {
public:
Person() {
cout << "no param constructor! 1" << endl;
mAge = 0;
}
Person(int age) {
cout << "1 param constructor! 2" << endl;
mAge = age;
}
/*Person(int age,int b =100) {
cout << "2 param constructor!" << endl;
mAge = age;
}*/
Person(int age, int b) {
cout << "2 param constructor!" << endl;
mAge = age;
}
~Person() {
cout << "析构函数已调用" << endl;
}
operator int() {
cout << "qianghi zhunahuan " << endl;
return mAge;
}
private:
int mAge;
};
int main()
{
Person p(2);
//if (p == 2)
if (2 == p)
{
int c = (int)p;
}
cout << p + 1 << endl;
cout << 1 + p << endl;
return 1;
}
对于template而言;接口是隐式的,奠定与有效的表达式和,多态奠定于函数重载和模板实现(具现化),发生在编译阶段
对于class而言,接口是显示的,其函数签名为中心,多态时通过virtual实现的,多态发生在运行阶段;