|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Многофайловые программы. Межфайловое взаимодействие классовКлассы отличаются от простых переменных тем, что определение класса не подразумевает резервирования памяти. Оно разве что информирует компилятор о том, что именно входит в класс. Это примерно как оговаривать, сколько байтов резервировать под переменную типа int, с той лишь разницей, что компилятор уже знаком с int, но не знаком с типом someCLass, пока вы его не определите. Определение класса содержит определения или объявления всех его членов: class someClass //определение класса { private: int memVar; //определение компонентной переменной public: int memFunc(int, int); //объявление метода }; Компоненты класса должны быть объявлены, но не обязательно определены. Как известно, определения методов помешаются вне класса и идентифицируются с помощью оператора разрешения контекста. Объявление класса лишь говорит о том, что то или иное имя принадлежит class someClass; //объявление класса Не путайте определение класса с определением (созданием) объекта класса:
В отличие от определения класса, определение объекта подразумевает резер- Классы ведут себя в межфайловых отношениях не так, как переменные и Почему же все так строго с классами? Дело в том, что компилятору необхо- //объявление extern int someVar; //видя объявление. someVar = 3; // компилятор может обработать это. Объявление функции тоже рассказывает компилятору обо всех типах исполь- //объявление int someFunc(int, int); //видя объявление. var1 = someFunc(var2,var3); //компилятор может обработать это. Что касается класса, то требуется именно его определение, чтобы указать все //определение class someClass //видя определение, компилятор { private: int memVar; }; someClass someObj; //может обработать это v1 = someObj.memFunc(v2, v3); //и это
Одного объявления, как видите, недостаточно компилятору для генерации Невозможно определить класс дважды в одном исходном файле, но каждый
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |