隐式转换和显式转换之间的区别
Difference between implicit conversion and explicit conversion
可能重复:
隐式与显式转换
"隐性转化"answers"显性转化"有什么区别?Java和C++有什么不同吗?
显式转换是指使用一些语法来告诉程序进行转换。例如(在Java中(:
int i = 999999999;
byte b = (byte) i; // The type cast causes an explicit conversion
b = i; // Compilation error!! No implicit conversion here.
隐式转换是指在没有任何语法的情况下进行转换。例如(在Java中(:
int i = 999999999;
float f = i; // An implicit conversion is performed here
需要注意的是,(在Java中(涉及基元类型的转换通常涉及表示的一些更改,这可能会导致精度损失或信息丢失。相比之下,(仅(涉及引用类型的转换不会改变基本表示。
Java和C++有什么不同吗?
我不这么认为。显然,可用的转换会有所不同,但"隐式"answers"显式"之间的区别是一样的。(注意:我不是C++语言的专家……但这些词在英语中有着自然的含义,我无法想象C++规范会在矛盾的意义上使用它们。(
你是说铸造?隐式意味着你传递一个类型实例,比如B,它继承了一个类型,比如a作为a。
例如:
Class A;
Class B extends A;
function f(A a) {...};
main() {
B b = new B;
f(b); // <-- b will be implicitly upcast to A.
}
实际上还有其他类型的隐式转换——在基元之间,使用默认构造函数。你的问题必须更加具体。
默认构造函数隐式:
class A {
A (B b) { ... };
}
class B {};
main() {
B b = new B();
A a = b; // Implict conversion using the default constructor of A, C++ only.
}
Casting是一种显式类型转换,在代码中指定,在编译时只受很少的规则约束。脚轮可能不安全;它们可能在运行时失败或丢失信息
隐式转换是由编译器执行的类型转换或基元数据转换,以符合数据提升规则或匹配方法的签名。在Java中,只执行安全的隐式转换:升级和升级。\
此外,我建议阅读有关C++隐式转换的文章:http://blogs.msdn.com/b/oldnewthing/archive/2006/05/24/605974.aspx
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?