sách gpt4 ai đã đi

Sự khác biệt giữa lớp classname(value); và lớp classname = value; khi có hàm tạo rõ ràng

In lại 作者:太空宇宙 更新时间:2023-11-04 15:53:02 29 4
mua khóa gpt4 Nike

当构造函数是显式时,它不用于隐式转换。在给定的代码片段中,构造函数被标记为 explicit。那为什么在 foo obj1(10.25); 情况下它可以工作,而在 foo obj2=10.25; 情况下它不工作?

#include 
class foo
{
số nguyên x;
công cộng:
explicit foo( int x ):x(x)
{}
};

int chính()
{
foo obj(10.25); // Not an error. Why ?
foo obj2 = 10.25; // Error
getchar();
trả về 0;
}

错误:错误 C2440:“正在初始化”:无法从“double”转换为“foo”

1 Câu trả lời

这两种形式的初始化在技术上是不同的。第一个 (foo obj(10.25);) 称为直接初始化。第二个 (foo obj = 10.25;) 称为复制初始化。

explicit 构造函数只能在显式初始化对象时使用。直接初始化是显式初始化对象的一种形式。另一种显式初始化形式是使用强制转换。

关于c++ - 类类名(值);和类类名=值;显式构造函数时的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708264/

29 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com