чем отличается присваивание от инициализации?
class sample {
char *s;
public:
sample()
{
s = new char ('\0');
cout << "Вызвался конструктор " <<this<< endl;
}
sample(const sample& obj)
{
s = new char[strlen(obj.s) + 1];
strcpy_s(s, strlen(obj.s) + 1, obj.s);
cout << "Конструктор копии" << this << endl;
}
~sample()
{
cout << "Попытка вызвать деструктор " << this << endl;
if (s) delete[] s;
}
void show() { cout << s << "\n"; }
void set(char* str);
};
// Загрузка строки.
void sample::set(char* str)
{
s = new char[strlen(str) + 1];
strcpy_s(s, strlen(str) + 1, str);
}
// Эта функция возвращает объект типа sample.
sample input()
{
char instr[80];
sample str;
cout << "Введите строку: ";
cin >> instr;
str.set(instr);
return str;
}
int main()
{
system("chcp 1251>0");
srand(time(NULL));
sample ob = input(); // чем отличается вот это
//sample ob;
//ob = input();// от этого? и почему этот вариант выдает ошибку?
ob.show();
return 0;
}