您的位置:首页 > 其它

隐式转换 && explicit 显示初始化

2011-01-15 11:07 239 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: