|
|
|
|
|
|
Теги |
| |
codeserfercom, nbspnbsp, Private, Visual, Возможность, Пример, Рассмотрим, Сегодня, Теперь, будет, данных, значение, который, может, можно, написать, например, очень, переменной, переменных, пользователя, помощью, программа, программирования, программы, просто, работы, разработки, решил, сделать, скрипт, строки, строку, также, только, функции, число, этого, языка, языков
Показать все теги
|
|
|
| |
|
|
|
|
|
|
|
|
| |
Изучая язык программирования C++, я открыл для себя интересную вещь, которая заключается в том, что классы в C++ - ничто иное как поименованная область действия которая включает в себя множество объявлений(определений) функций(методов), некоторые метаданные, и две структуры, первая из которых определяет статические поля класса(далее "структура класса"), а вторая объявляет поля объекта данного класса(далее "структура объекта")..... Таким образом, получив указатели на эти структуры(в случае "структура класса" необходимо хотя бы 1 статическое поле с ключом доступа public), становится возможной модификация полей защищенных ключами доступа private и protected. Примеры: #include <iostream>
using namespace std;
/*--Пример №1:--*/
class myclass // подопытный зверек { public: int pub; private: int priv; public: void print_priv() { cout << priv << endl; } } myobj;
/* * внутренности "структуры объекта" myobj будут чем то типа: * * struct { * int pub; * int priv; * } myobj; * */
int main1() { int*buf = &myobj.pub;// кладем в buf адрес myobj.pub
buf++;// переходим на sizeof int байт, теперь buf указывает на myobj.priv
*buf = 1;// извлекаем из buf адрес myobj.priv, и записываем константу
myobj.print_priv();// печатаем защищенное поле объекта
return 0; }
/*--Пример №2:--*/
class myclass2 { private: int priv; public: void print_priv() { cout << priv << endl; } } myobj2;
int main2() { int*buf;
buf = (int*) &myobj2;
*buf = 2;// модифицируем myobj2.priv
myobj2.print_priv();
return 0; }
/*--Пример №3:--*/
class myclass3 { private: static int priv; public: static int pub;
static void print_priv() { cout << myclass3::priv << endl; } };
int myclass3::priv; int myclass3::pub;
int main3() { int*buf;
buf = &myclass3::pub;
buf--;// модифицируем myclass3::priv
*buf = 3;
myclass3::print_priv();
return 0; }
int main() { main1(); main2(); main3(); return 0; } |
|
| |
Что-то не получается? Не понятна какая-то часть кода? Напишите комментарий об этом и мы обязательно Вам все объясним! Обязательно напишите отзыв о программе / учебнике. Для выражения благодарностей есть кнопка: |
| |
| |
Просьбы перезалить в комментариях принимаются |
| |
|
|
| |
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. |
|
| |
Другие коды по теме: |
|
| |
Определяем расширение экрана с помощью WinAPIНахождение всех совершенных чисел от 1 до nОбращение к WhoIs для IP на PHPГалерея изображенийОткрытие CD-ROM |
|
|

© 2008 - 2010. Копирование материалов запрещено! |
|
|