sách gpt4 ăn đã đi

c++ - 两次初始化: Foo f(); Foo f = Foo()有什么区别

In lại Tác giả: Walker 123 更新时间:2023-11-30 00:44:04 30 4
mua khóa gpt4 giày nike

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

Foo f();
Foo f1 = Foo();

我发现当我将 Foo(const Foo &) 声明为私有(private)时,Foo f1 = Foo(); 不编译。所以我认为 Foo f1 = Foo();只是调用复制构造函数,但是当我将代码更改为:

class Foo
{
public:
Foo(){}
Foo(const Foo &){std::cout<<"Foo(const Foo &)";}

};

Foo f();
Foo f1 = Foo();

它不打印任何东西。那么这两个初始化有什么区别:Foo f(); Foo f = Foo() ?

câu trả lời hay nhất

由于copy elision不必调用复制构造函数。不过,复制构造函数必须仍然作为公共(public)成员存在。

并且 Foo f(); 声明了一个名为 nếu của函数,不带任何参数并返回一个 Đồ ăn按值对象。

关于c++ - 两次初始化: Foo f(); Foo f = Foo()有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51035704/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress