C++ 一个类对象到另一个数据类型?

C++ 一个类对象到另一个数据类型?,c++,type-conversion,C++,Type Conversion,可以将类对象转换为int、double、char等格式吗。。它被称为隐式转换还是显式转换 class MyClass { int x; }; int main() { MyClass MyObject; //convert my object to int } 创建铸造操作符: class Foo { public: operator int() const { return 1; } }; class Bar { public: operator Foo() co

可以将类对象转换为int、double、char等格式吗。。它被称为隐式转换还是显式转换

class MyClass
{
int x;
};

int main()
{
    MyClass MyObject; //convert my object to int
}

创建铸造操作符:

class Foo {
public:
    operator int() const { return 1; }
};

class Bar {
public:
    operator Foo() const { return Foo(); }
};


int main() {
    Foo f;
    Bar b;
    int i1 = f; // implicit, just one conversion
    int i2 = b; // not valid
    int i3 =  static_cast<Foo>(b); // Convert b to Foo explicitly, Foo to int implicitly
}
class-Foo{
公众:
运算符int()常量{return 1;}
};
分类栏{
公众:
运算符Foo()常量{return Foo();}
};
int main(){
福福;
b栏;
int i1=f;//隐式,仅一次转换
int i2=b;//无效
int i3=static_cast(b);//显式地将b转换为Foo,隐式地将Foo转换为int
}

创建铸造操作员:

class Foo {
public:
    operator int() const { return 1; }
};

class Bar {
public:
    operator Foo() const { return Foo(); }
};


int main() {
    Foo f;
    Bar b;
    int i1 = f; // implicit, just one conversion
    int i2 = b; // not valid
    int i3 =  static_cast<Foo>(b); // Convert b to Foo explicitly, Foo to int implicitly
}
class-Foo{
公众:
运算符int()常量{return 1;}
};
分类栏{
公众:
运算符Foo()常量{return Foo();}
};
int main(){
福福;
b栏;
int i1=f;//隐式,仅一次转换
int i2=b;//无效
int i3=static_cast(b);//显式地将b转换为Foo,隐式地将Foo转换为int
}

构造函数也可以作为另一种方式的强制转换操作符

class Foo {
public:
    Foo(const Bar &)   // Bar -> Foo
};

class Bar {
public:
    Bar(const Foo &)
};

构造函数也可以充当另一种方式的强制转换操作符

class Foo {
public:
    Foo(const Bar &)   // Bar -> Foo
};

class Bar {
public:
    Bar(const Foo &)
};

不确定,但可以使用显式强制转换吗?可以,隐式和显式。@用户:这将允许从
Foo
隐式转换为
int
。在C++03中,无法生成显式转换运算符;在C++0x中,我们可以将函数标记为
explicit
@GMan:这是时候了
explicit
已经缺少很长一段时间了:p如果int i=f可以进行转换,您何时需要静态转换?不确定,但您可以使用显式转换吗?是的,隐式和显式均可。@用户:这将允许从
Foo
隐式转换到
int
。在C++03中,无法生成显式转换运算符;在C++0x中,我们可以将函数标记为
explicit
@GMan:这是时候了<代码>显式已经缺少很长时间了:p如果int i=f可以进行转换,您何时需要静态强制转换?