Вопрос по С++

Компьютеры программирование с++

Равноценны ли эти коды:
1. int* ptr;
ptr = &var1;
ptr ->show();

2. myclass var1
var1.show();

Если нет - то почему, объясните плиз я не оч разбираюсь в этом(

Примечание:
show() - метод класса
var1 - объект класса myclass
Ответы:
описание классе где?
По какому критерию мы должны определять ценность кода ?
Первый пример вообще работать не будет, поскольку у int в С++ не может быть метода show().
int* ptr; // объявил указатель на ptr
ptr = &var1; // присваиваешь типу int* тип адрес класса myclass1, это точно бред
ptr ->show();
1) создаешь указатель на объект типа инт... передаешь ему ссылку на экземпляр класса myclass... и ждешь что тебе что то покажет? нет, это не будет работать... у типа int* нет метода show()...
2) создаешь экземпляр... и показываешь его... тут все норм, если все верно в самом классе...
В таком виде 1-й вариант не должен компилироваться.
можно, но крайне не желательно, так:
int* ptr;
ptr = (int*)&var1; //на большинстве платформ все указатели имеют одинаковый размер в памяти, хотя можно нарваться на исключение!!!
((myclass*)ptr)->show();


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.