Здравствуйте, rg45, Вы писали:
R>Вот ты непрошибаемый. Тебе не приходило в голову, что, если б не твои операции взятия адресов, то компилятор мог бы вообще не создавать никаких объектов? Вот тебе пример, обрати внимание на созданный машинный код:
R>https://godbolt.org/z/nrjM1rhMa
Ну вот этого я и ждал, лучше опозориться и узнать что-то полезное, чем с гордостью сохранять невежество.
А вот тут:
https://www.programiz.com/online-compiler/6eYq7jWJZ85iG
#include <iostream>
class MyClass {
public:
const int value;
constexpr MyClass(int v) : value(v) {}
};
int main() {
const MyClass* obj1 = new MyClass(5);
const MyClass* obj2 = new MyClass(5);
std::cout << "Address of obj1: " <<static_cast<const void*>(obj1) << std::endl;
std::cout << "Address of obj2: " << static_cast<const void*>(obj2) << std::endl;
delete obj1;
delete obj2;
return 0;
}
По идее же нет смысла создавать новый объект? А он вроде как создается:
https://godbolt.org/z/9GaGa7eKn
P.S.
Добавил const — для поля — ничего не изменилось.