zoukankan      html  css  js  c++  java
  • C++类型转换函数

    1.什么是类型转换函数

    类型转换函数的作用是将一个类的对象转换成另一类型的数据。

    class testclass
    {
    private:
    	int r;
    	int m;
    	
    public :
    	testclass(int n,int f):r(1)
    	{
    		m=n+f;
    	}
    	~testclass()
    	{
    		printf("析构
    ");
    	}
    	operator int()
    	{
    		return m;
    	}
    	//operator double()
    	//{
    	//	return (double)m;
    	//}
    };
    

    比如上述的类

    如果调用cout输出testclass对象,则编译器会调用operator int()。

    testclass A(1,3);
    cout<<A<<endl;

    输出结果为4(编译器VS2010,系统环境WIN7 X64)

    2.是不是所有调用都会自动调用类型转换函数?

    上述第一项,已经证明cout调用可以。

    那么来看printf。

    代码:printf("%d",A);

    输出为1(编译器VS2010,系统环境WIN7 X64)

    事实证明printf是不可以的。

    所以并不是所有的调用形式都会调用类型转换函数。

    int n=A+1;这种运算的调用是可以的。

    3.最好不要同时存在两个或两个以上的类型转换函数

    容易造成语法上的歧义

    我将上述的operator double()的注释打开

    cout输出A的值,编译不过。错误提示为不明确的<<

    而且

    int n=A+1;
    double d = A+1.0;

    这种形式的调用也不能通过编译

    需要强制转换

    int n=(int)A+1;
    double d = (double)A+1.0;

    囧.......

  • 相关阅读:
    robot 如何定义用户关键字、变量
    appium 启动参数配置
    mock模拟接口返回数据
    jenkins 中邮件发送
    python中正则表达式
    python中操作数据库
    pytest和unittest中参数化如何做
    learnku社区分享
    FOR ALL ENTRIES IN的使用
    BAPI_DELIVERYPROCESSING_EXEC
  • 原文地址:https://www.cnblogs.com/zwt1234/p/5610213.html
Copyright © 2011-2022 走看看