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;