Автор работы: Пользователь скрыл имя, 19 Февраля 2012 в 20:06, курсовая работа
Разрабатывая Си с классами, позднее Си++, Страуструп также написал программу Cfront, транслятор, который перерабатывал исходный код Си с классами в исходный код простого Си. Новый язык, неожиданно для самого автора, приобрел большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.
Введение………………………………………………………………………………..3
Основная часть…………………………………………………………………………5
Типы данных С++…………………………………………………………………..5
1.1 Литералы…………………………………………………………………………...5
1.2 Переменные………………………………………………………………………...9
1.3 Указатели………………………………………………………………………….12
Строковые типы…………………………………………………………………..14
Классы……………………………………………………………………………..15
2.1 Определение класса………………………………………………………………15
2.2 Друзья……………………………………………………………………………..16
Объекты классов………………………………………………………………….18
Библиотека iostream……………………………………………………………….20
Заключение……………………………………………………………………………23
Глоссарий……………………………………………………………………………..25
Список использованных источников…………………
}
Другом может быть функция из пространства имен, функция-член другого класса или даже целый класс. В последнем случае всем его функциям-членам предоставляется доступ к неоткрытым членам класса, объявляющего дружественные отношения.
2.3 Объекты классов.
Определение класса, например Screen, не приводит к выделению памяти. Память выделяется только тогда, когда определяется объект типа класса. Так, если имеется следующая реализация Screen:
class Screen {
public:
// функции-члены
private:
string _screen;
string:size_type _cursor;
short _height;
short _width;
};
то определение:
Screen myScreen;
выделяет область памяти, достаточную для хранения четырех членов Screen. Имя myScreen относится к этой области. У каждого объекта класса есть собственная копия данных-членов. Изменение членов myScreen не отражается на значениях членов любого другого объекта типа Screen.
Область видимости объекта класса зависит от его положения в тексте программы. Он определяется в иной области, нежели сам тип класса:
class Screen {
// список членов
};
int main()
{
Screen mainScreen;
}
Тип Screen объявлен в глобальной области видимости, тогда как объект mainScreen объявлен в локальной области функции main().
Объект класса также имеет время жизни. В зависимости от того, где и как он объявлен, он может существовать в течение всего времени выполнения программы или только во время вызова некоторой функции. Область видимости объекта класса и его время жизни ведут себя очень похоже.
Объекты одного и того же класса можно инициализировать и присваивать друг другу. По умолчанию копирование объекта класса эквивалентно копированию всех его членов. К примеру:
Screen bufScreen = myScreen;
// bufScreen._height = myScreen._height;
// bufScreen._width = myScreen._width;
// bufScreen._cursor = myScreen._cursor;
// bufScreen._screen = myScreen._screen;
Указатели и ссылки на объекты класса также можно объявлять. Указатель на тип класса разрешается инициализировать адресом объекта того же класса или присвоить ему такой адрес. Аналогично ссылка инициализируется первым значением объекта того же класса.
Для доступа к данным или функциям-членам объекта класса следует пользоваться соответствующими операторами. Оператор "точка" (.) применяется тогда, когда операндом является сам объект или ссылка на него; а "стрелка"(->) – когда операндом служит указатель на объект:
#include
"Screen.h"
bool isEqual( Screen& s1, Screen *s2 )
{ //
возвращает false, если
объекты не равны,
и true - если равны
if (s1.height() != s2->height() ||
s2.width() != s2->width() )
return false;
for ( int ix = 0; ix < s1.height(); ++ix )
for ( int jy = 0; jy < s2->width(); ++jy )
if ( s1.get( ix, jy ) != s2->get( ix, jy ) )
return false;
return true;
}
isEqual() –
это не являющаяся членом
Частью стандартной библиотеки C++ является библиотека iostream – объектно-ориентированная иерархия классов, где используется и множественное, и виртуальное наследование10. В ней реализована поддержка для файлового ввода/вывода данных встроенных типов. Кроме того, разработчики классов могут расширять эту библиотеку для чтения и записи новых типов данных.
Для использования библиотеки iostream в программе необходимо включить заголовочный файл
#include <iostream>
Операции ввода/вывода выполняются с помощью классов istream - потоковый ввод и ostream - потоковый вывод. Третий класс, iostream, является производным от них и поддерживает двунаправленный ввод/вывод. Для удобства в библиотеке определены три стандартных объекта-потока:
Вывод осуществляется, как правило, с помощью перегруженного оператора сдвига влево (<<), а ввод – с помощью оператора сдвига вправо (>>):
#include <iostream>
#include <string>
int main()
{
string in_string;
// вывести литерал на терминал
cout << "Введите имя пожалуйста- ";
// прочитать ответ пользователя в in_string
cin >> in_string;
if ( in_string.empty() )
// вывести сообщение об ошибке на терминал
cerr << "ошибка: данная строка пустая!\n";
else cout << "Привет " << in_string << "!\n";
}
Помимо чтения с терминала и записи на него, библиотека iostream так же поддерживает чтение и запись в файлы. Для этого предназначены следующие классы:
Чтобы использовать часть библиотеки iostream, связанную с файловым вводом/выводом, необходимо включить в программу заголовочный файл:
#include <fstream>
Файл fstream уже включает iostream, так что включать оба файла вовсе необязательно.
Библиотека iostream поддерживает также ввод/вывод в область памяти, при этом поток связывается со строкой в памяти программы. С помощью потоковых операторов ввода/вывода мы можем записывать данные в эту строку и читать их оттуда. Объект для строкового ввода/вывода определяется как экземпляр одного из следующих классов:
Для использования любого из этих классов в программу нужно включить заголовочный файл:
#include <sstream>
Файл sstream так же включает iostream.
В процессе изучения С++ мы понимаем, что это чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов, до сложных программных комплексов самого различного назначения. А в частности:
Но на ряду с плюсами язык С++ имеет несколько недостатков, такие как:
Существуют и другие различия. К примеру, C++ не разрешает вызывать функцию main() внутри программы, в то время как в C это действие правомерно. Кроме того, C++ более строг в некоторых вопросах; например, он не допускает неявное приведение типов между несвязанными типами указателей и не разрешает использовать функции, которые ещё не объявлены.
Но все эти недостатки со временем исчезают, так как язык С++ постоянно улучшается и становится более удобным.
№ п/п | Понятие | Определение |
|
Функции-друзья | это функции, которые не являются функциями-членами и тем не менее имеющие доступ к защищённым и закрытым членам класса. |
2 | Наследник |
|
3 | Полиморфизм |
|
4 | Конструктор |
|
5 | Деструктор |
|
6 | Инкапсуляция |
|
7 | Наследование |
|
8 | Класс |
|
9 | Итератор |
|
10 | Контейнер |
|