Информация об изменениях

Сообщение Re[6]: Про идентичность const от 24.01.2025 8:36

Изменено 24.01.2025 8:39 Shmj

Re[6]: Про идентичность const
Здравствуйте, rg45, Вы писали:

R>Вот ты непрошибаемый. Тебе не приходило в голову, что, если б не твои операции взятия адресов, то компилятор мог бы вообще не создавать никаких объектов? Вот тебе пример, обрати внимание на созданный машинный код:


R>https://godbolt.org/z/nrjM1rhMa


Ну вот этого я и ждал, лучше опозориться и узнать что-то полезное, чем с гордостью сохранять невежество.

А вот тут: https://www.programiz.com/online-compiler/6eYq7jWJZ85iG

#include <iostream>

class MyClass {
public:
 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
Re[6]: Про идентичность const
Здравствуйте, 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 — для поля — ничего не изменилось.