Я был озадачен тем, что мне пришлось написать конструктор копирования этого одного класса, когда я определил функцию внутри другого класса с типом возвращаемого первого класса.Какой из них - конструктор по умолчанию или экземпляр копии вызывает вызов, когда я определяю функцию, которая имеет (не ссылочный) тип возврата этого класса?
Например:
class Foo{
// attributes
public:
Foo(){...}
// I had to write the CC
Foo(const Foo& obj){
//...
}
}
class Bar{
// ....
// This is the function
Foo SomeFunction()
{
Foo myVar;
// ....
return myVar;
}
Я проверил на cout
Инг, что конструктор копирования на самом деле вызывается.
Мне нужно подтверждение, хотя, поскольку мне кажется более логичным, что в этой ситуации вызывается конструктор по умолчанию, например, в этой строке, где создается myVar
.
Я новичок, поэтому я пытаюсь обвести голову этими вызовами.
'myVar' - локальная переменная внутри функции, ее нужно скопировать во внешнюю переменную. – songyuanyao
@songyuanyao Итак, конструктор копирования вызывается, когда это копирование происходит? – developer10
Да, через копирование или копирование. – songyuanyao