使用自己的类型进行 C++ 结构体初始化

问题描述 投票:0回答:1

使用自定义构造函数,可以使用自己的类型初始化结构。

struct Foo {
    int x, y;
    Foo(int X, int Y) : x(X), y(Y) {}
    Foo(const Foo& f) : Foo(f.x, f.y) {}
};
Foo foo1(1, 2);
Foo foo2 = Foo(foo1);

但是,我发现声明构造函数是没有必要的。

struct Foo {
    int x, y;
    Foo(int X, int Y) : x(X), y(Y) {}
    // Foo(const Foo& f) : Foo(f.x, f.y) {} <-- This can be omitted.
};
Foo foo1(1, 2);
Foo foo2 = Foo(foo1);

我想知道这怎么可能。

c++ struct constructor
1个回答
0
投票

来自 https://en.cppreference.com/w/cpp/language/copy_constructor

如果没有为类类型提供用户定义的复制构造函数,编译器将始终将复制构造函数声明为其类的非显式内联公共成员。这个隐式声明的复制构造函数的形式为

T::T(const T&)
...

© www.soinside.com 2019 - 2024. All rights reserved.