Для указателей и классов, вот моя аналогия. Я буду использовать колоду карт. Колода карт имеет номинал и тип (9 червей, 4 пики и т. Д.). Таким образом, в нашем языке программирования, подобном C ++, «Колода карт» мы скажем следующее:
HeartCard card = 4; // 4 of hearts!
Теперь вы знаете, где находится 4 червы, потому что, черт возьми, вы держите колоду лицом вверх в руке, и она наверху! Итак, что касается остальных карт, мы просто скажем, что «4 червы» в НАЧАЛЕ. Итак, если бы я спросил вас, какая карта в НАЧАЛЕ, вы бы ответили: «Четыре сердца, конечно!». Ну, ты просто "указал" мне, где находится карта. На нашем языке программирования "Колода карт" вы также можете сказать следующее:
HeartCard card = 4; // 4 of hearts!
print &card // the address is BEGINNING!
Теперь переверните колоду карт. Теперь задняя сторона НАЧАЛА, и вы не знаете, что это за карта. Но, скажем, вы можете сделать это как хотите, потому что вы полны волшебства. Давайте сделаем это в нашем языке "Колода карт"!
HeartCard *pointerToCard = MakeMyCard( "10 of hearts" );
print pointerToCard // the value of this is BEGINNING!
print *pointerToCard // this will be 10 of hearts!
Что ж, MakeMyCard («10 червей») - это то, что вы делали свою магию и знали, что хотите указать НАЧАЛО, делая карту 10 червей! Вы переворачиваете свою карту и, вуаля! Теперь * может вас оттолкнуть. Если это так, проверьте это:
HeartCard *pointerToCard = MakeMyCard( "10 of hearts" );
HeartCard card = 4; // 4 of hearts!
print *pointerToCard; // prints 10 of hearts
print pointerToCard; // prints BEGINNING
print card; // prints 4 of hearts
print &card; // prints END - the 4 of hearts used to be on top but we flipped over the deck!
Что касается классов, мы использовали классы в примере, определив тип как HeartCard. Мы знаем, что такое HeartCard ... Это карта со значением и типом сердца! Итак, мы классифицировали это как HeartCard. Каждый язык имеет одинаковый способ определения или «классификации» того, что вы хотите, но все они имеют одну и ту же концепцию! Надеюсь, это помогло ...