Абстрактный вопрос по с++
Меня интересует не сам процесс копирования а скорее ошибки возникающие при данном процессе в частности потеря адреса.
Я так понял законы действующие на обычные переменные ничем не отличаются, так для простоты понимания.
приведу пример сначала с переменными
{
int a = 2;
{
int b;
b = a;
{
b = 5;
} // блок стирает все данные в нем, однако b все равно = 5 за блоком
} // здесь удалится переменная b. далее ее не существует.
b = 3; // такая запись не сработает по причине того что переменной b не существует.
}// здесь удалится переменная а.
{
String obj1("ewgte"); // создали объект и вызвали конструктор где он и присвоил переданное значение.
{
String obj2; // создали другой объект.
obj2 = obj1; // obj2 вызвал конструктор копирования где собственно все и присваивается (ну как бы сказать
// перегрузка равенства в данном случае будет конструктором копирования, думаю так правильнее)
{
obj2 = "jksdhg"; // по аналогии с переменными в общем...
} //0х1 тут вызывается деструктор для объекта 2.
//ЧЕМУ РАВНО OBJ2 ЗДЕСЬ??? Подразумеваю что как в случае и с переменными, объект2 будет равен "jksdhg"
} //0х2
obj2 = "jdkhg"; // ТАКЖЕ НЕ СРАБОТАЕТ...
}
Или я не верно рассуждаю.?

Программа не рабочая. Просто вопрос схожести переменных с объектами классов когда возникают теже по сути действия.
Да дополню. программа подтверждает мою догадку. Просто мне чувак сказал что не должно быть так.

а эта программа рабочая. ну кусок показал.... в итоге после удаления объекта стр2 объект стр равен удаленному стр2.
pastebin com/raw/H8yqbfZz
> obj2 = obj1; // obj2 вызвал конструктор копирования
Нет. Это оператор присваивания.
> // перегрузка равенства в данном случае будет конструктором копирования, думаю так правильнее)
Нет. Конструктор копий работает при использовании присваивания только при инициализации.
Тебе следует почитать про области видимости (классы хранения) объектов.
Также освежи знания о специальных функциях-членах: конструкторах, деструкторах, операторах и, особенно, операторах неявного приведения типа.
UPD. Если ты хранишь строку как char const*, то у меня для тебя плохие новости: копируется только адрес, а не строка (привет, strcpy).
UPD.
> а эта программа рабочая.
А здесь уже работает оператор копирования, но побитовый (автоматически сгенерированный)
Тут не область видимости нужно гуглить, а о принципах работы стека, естественно при удалении (деструкторе) будет содержаться мусор, тот который был ранее обозначен для хранения данных... По сути деструктор это просто возврат в стек пространства которое он заюзал. И запомните уже, класс ничего не содержит кроме данных! Он не хранит функции\методы и т. д, за это отвечает другая секция...