c++ - 了解 C++ 中的转换

标签 c++ casting type-conversion

我是Java出身,所以当需要调用这样的函数时:

struct A {
    int a;
    A(int a) : a(a){ }
};

A foo(A a){
    return A(a);
}

我倾向于写类似的东西

A a = foo(A(10));

而且它工作得很好。但是我了解到它也可以通过这种方式完成::

A a = foo(static_cast<A>(10));

即它强制执行隐式转换。那么,根据经验,当我们需要利用隐式转换时,我们是否应该始终使用 static_cast 风格?或者在某些情况下可能需要函数/C 风格的转换?

最佳答案

在 C++ 中,您永远不需要 C 风格的转换。至于你的例子,最常见的写法是这样的:

A a = foo(A(10));

关于c++ - 了解 C++ 中的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622574/

相关文章:

c++ - 阅读复杂的 const 声明的简单规则?

c++ - 将工作委托(delegate)给父类(super class)的构造函数

java - 如何在运行时将 Class<T> 转换为类似于 Class<T extends Foo> 的对象?

Java - 具有相同方法的不同对象的数组

在没有辅助函数的情况下转换函数指针参数

swift - 如何在 Swift 中将 Int32 转换为 Int?

Clojure 将字符串的 PersistentVector 转换为关键字的 PersistentVector

c++ - 不完整类型无法定义

c++ - 此代码如何计算 1 位的数量?

c - 如何检查 long long 是否可以放入 double 变量