Если я пишу класс имени Test и написать испытания типа показать функцию а() какПочему деструктор вызывается, но при вызове объекта в качестве параметра не вызывается конструкция?
#include <iostream>
using namespace std;
class Test{
public:
int x;
Test()
{
cout<<"Empty or Default Constructor"<<endl;
}
Test(int x)
{
cout<<"Valued constructor"<<endl;
}
~Test()
{
cout<<"Destructor"<<x<<endl;
}
Test show(Test obj)
{
Test tt;
tt.x=20;
return tt;
}
};
int main()
{
Test t1,t2(20);
t2.show(t2);
return 0;
}
Выход:
Empty or Default Constructor
Valued constructor
Empty or Default Constructor
Destructor : 20
Destructor : 1988276941
Destructor : 1988276941
Destructor : 1972875622
затем выход показывает деструктор Test OBJ и return tt, но для них нет конструктора, но, как правило, мы знаем, что fir будет создан конструктор stly и после его завершения будет вызван деструктор задачи, но почему он является исключительным при передаче и возврате любого объекта?
В «Test tt;» конструктор по умолчанию для теста будет вызываться (если он существует), но поскольку вы не предоставляете код теста, на него нельзя ответить. Также обратите внимание, что obj не используется вообще, поэтому компилятор может также оптимизировать его. –
полностью напишите код и покажите, где вы печатаете. –
@ DanielDaranas, не могли бы вы рассказать мне теперь, почему конструктор не звонит на тест obj и возвращает tt. –