Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2021, 18:12   #1
Awstech
Новичок
Джуниор
 
Регистрация: 16.05.2021
Сообщений: 1
По умолчанию Помогите разобраться в коде С++

Вот есть такой код, можете подробно(но не слишком) объяснить как он работает

Код:
#include <iostream>

using namespace std;


class PatternAdapter
{
public:
    string getPatternAdapter() {
        string FIO;
            cout << "Введите ФИО:"; cin >> FIO;
        string Doljnost;
            cout << "\n Должность: 1) Specialist 2) Manager "; cin >> Doljnost;
        string ImyaDoka;
            cout << "\n Документ: 1) Order 2) Statement"; cin >> ImyaDoka;
        string Tekst;
            cout << "\n Введите текст:"; cin >> Tekst;           
        string Data;
            cout << "\n Дата:"; cin >> Data;
        string Vivod = FIO + "\n" + Doljnost + "\n " + ImyaDoka + "\n  " + Tekst + "\n   " + Data;
        cout << "Английский:" << endl << Vivod << endl;
        if (ImyaDoka == "Order") { ImyaDoka = "Приказ"; }
        else { ImyaDoka = "Заявление"; }
        if (Doljnost == "Specialist") { Doljnost = "Специалист"; }
        else { Doljnost = "Менеджер"; }
        Vivod = FIO + "\n" + Doljnost + "\n " + ImyaDoka + "\n  " + Tekst + "\n   " + Data;
        return Vivod;

    }
    

};
class Sostav
{
public:
    virtual ~Sostav() {}
    virtual string Rus() = 0;
};
class adapter : public Sostav
{
public:
    adapter(PatternAdapter* p) : p_fDoc(p){ }
    ~adapter() {
        delete p_fDoc;
    }
    string Rus() {
        return p_fDoc->getPatternAdapter();

    }
private:
    PatternAdapter* p_fDoc;
};
int main()
{
    setlocale(LC_ALL, "Russian");
    Sostav* p = new adapter(new PatternAdapter);
    cout << "Русский:" << endl << p->Rus() << endl;
    delete p;
    return 0;
}
Awstech вне форума Ответить с цитированием
Старый 06.08.2021, 13:26   #2
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Операторы >> и << для потоков перегружены на ввод-вывод, острия указывают направление. К какому-то идентификатору? Ну так в то, что им обозначают. Например,
Код:
cin>>i
вводит в i. А
Код:
cout<<i
выводит в cout. Идентификаторы cin и cout обозначают потоки. Поток ввода зовут cin, поток вывода – cout. Термины соответствуют направления в машину и из машины. endl – модификатор, заставляет переходить на следующую строку и очищать буфера. Слово class начинает описание класса. Класс – это сущность, объединяющая данные (не скалярные) с кодом для их обработки. Причём, код хранит сам класс, а данные – его экземпляры, называемые также объектами. Не объектами класса, а просто объектами. Класс имеет члены, в их число входят: поля (члены-перменные и члены-константы), методы (подпрограммы-члены), конструкторы (члены, создающие экземпляры) и декструкторы (члены, удаляющие экземпляры). Любой нестатический член класса является и членом всех его экземпляров. При этом поля экземпляров класса имеют значения, а поля самого класса – только типы. Тип любого члена класса общий для имеющих то же имя членов всех экземпляров. public означает, что дальше идут члены, к которым можно обратиться извне, privete – только из методов данного класса. Точка и оператор -> – это операторы доступа к члену объекта. Слева от оператора объект, справа – его член. Такая конструкция позволяет указать, к члену какого именно объекта Вы обращаетесь. Фигурные скобки операторные, в круглые заключается список параметров подпрограммы (функции или процедуры, на c++ все подпрограммы – только функции). Функция main начинается с точки входа в программу. Оператор virtual отмечает виртуальные члены. Если они перегружены в потомках класса, то к перегруженным версиям всё равно можно обращаться по указателю на базовый класс. Имя конструктора совпадает с именем класса, если у конструктора нет параметров, то это конструктор по умолчанию, он используется при выделении памяти оператором new и при декларировании статических, глобальных и автоматических экземпляров вообще без круглых скобок (подобно декларациям обычных переменных без инициализации), в этом случае конструктор выполняет операции, заменяющие неявную инициализацию. Имя деструктора состоит из символа ~ и имени класса. Если в заголовке класса X через двоеточие указан класс Y, то Y – непосредственный предок X. public, protected или private в этом случае указывает видимость членов Y, когда они, не перегружаясь, станут членами X.
taras-proger77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться в коде НиколайНСК PHP 2 18.11.2017 19:53
Помогите разобраться в коде! From_KZ Помощь студентам 21 25.11.2016 15:24
Помогите разобраться в коде... dimwow Паскаль, Turbo Pascal, PascalABC.NET 3 28.09.2016 08:43
Помогите разобраться в коде p0keT Win Api 1 12.12.2014 13:56