注册 登录
编程论坛 C++教室

这个类型转换为什么没有返回值类型 ,谢谢!

datoushan 发布于 2010-04-25 12:05, 644 次点击
#include<iostream.h>
class a
{
   
public:
    operator double()const;
    a();
    int dz;
    int mz;
};
a::a()
{
    mz = 1;
    dz = 2;
}

a::operator double()const
{
    return mz * 1.0 / dz;
}

int main()
{
    a zz;
    double s = zz;
    cout<<s<<endl;
    return 0;
}
5 回复
#2
lijm19892010-04-25 12:23
它的返回值类型就是函数名所代表的类型。即LZ代码中返回的就是double
#3
xueyuhanhai2010-04-30 18:46
楼主这是类型转换函数里面的内容吧。
我把代码解释了一下,希望楼主满意:
#include<iostream.h>
class a
{
   
public:
    operator double()const;//类型转换函数;把类a类型转换为double类型;因此不写函数类型;
    a();
    int dz;
    int mz;
};
a::a()
{
    mz = 1;
    dz = 2;
}

a::operator double()const
{
    return mz * 1.0 / dz;//返回值是double类型的;
}

int main()
{
    a zz;
    double s = zz;//调用类型转换函数;
    cout<<s<<endl;
    return 0;
}

[ 本帖最后由 xueyuhanhai 于 2010-4-30 18:50 编辑 ]
#4
guowei37582010-04-30 19:45
operator double()const;//类型转换函数;把类a类型转换为double类型;因此不写函数类型;
double是要转换的类型
()在这里是干啥的?啥意思?
const在这里是干啥的?啥意思?
还有:应该是
int main()
{
    a zz;
    double s = zz.a;//调用类型转换函数;
    cout<<s<<endl;
    return 0;
} 吧
#5
xueyuhanhai2010-04-30 20:53
回复 4楼 guowei3758
operator double()const这个函数的意思就是把类a定义的对象转化为double类型。()表示的是函数的参数为空,即没有参数。const 说明是一个常成员函数。
还有:应该是
int main()
{
    a zz;
    double s = zz.a;//调用类型转换函数;
    cout<<s<<endl;
    return 0;
} 吧
zz是一个对象,而a是一个类啊。“.”是成员运算符啊。zz.a错误的 代码啊 。

[ 本帖最后由 xueyuhanhai 于 2010-5-1 13:06 编辑 ]
#6
南国利剑2010-05-01 08:51
回复 4楼 guowei3758
我认为楼主给出的代码没有问题
1