C++ 一个类对象到另一个数据类型?
可以将类对象转换为int、double、char等格式吗。。它被称为隐式转换还是显式转换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
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可以进行转换,您何时需要静态强制转换?