C++ 在C+中复制首字母的代码示例是否相同+;?

C++ 在C+中复制首字母的代码示例是否相同+;?,c++,C++,代码示例一: struct Foo { int value; Foo(int v):value(v) {}; }; Foo foo=10; 代码示例二: Foo foo2=foo; 示例代码2与示例代码1相等吗 示例代码2与示例代码1相等吗 是的,两个对象foo2和foo3将包含与foo相同的值。您可以确认这两个变量的值成员变量是相同的 作为通知,Foo-foo2=Foo仅在构造函数未声明为显式的情况下有效(与您的情况类似) 它们都调用复制构造函数吗 在这种情况下,是的,

代码示例一:

struct Foo {
  int value; 
  Foo(int v):value(v) {};  
  };

Foo foo=10;
代码示例二:

Foo foo2=foo;
示例代码2与示例代码1相等吗

示例代码2与示例代码1相等吗

是的,两个对象
foo2
foo3
将包含与
foo
相同的
值。您可以确认这两个变量的
成员变量是相同的

作为通知,
Foo-foo2=Foo仅在构造函数未声明为显式的情况下有效(与您的情况类似)

它们都调用复制构造函数吗

在这种情况下,是的,它们都调用复制构造函数。请注意,如果:

Foo foo3(foo);
是:


将在
Foo(int)
构造函数上调用,然后调用
操作符=
函数。

这两个语句并不等价:
foo2
在概念上由
Foo
的副本初始化,而
foo3
直接复制
Foo
。在您的代码中,您看不到差异,但是如果您使
Foo
的复制构造函数
显式
,则
foo2
的初始化不起作用,而
foo3
的初始化起作用。

只要构造函数不显式。
Foo foo2 = foo;
Foo foo2(0);
foo2 = foo;