Левша
Левша

Что такое класс в Си++?

2 868
42
0
Ответы
Андрей Сучков
Андрей Сучков

Класс в программировании — разновидность абстрактного типа данных в объектно-ориентированном программировании (ООП), характеризуемый способом своего построения. Другие абстрактные типы данных — метаклассы, интерфейсы, структуры, перечисления, — характеризуются какими-то своими, другими особенностями. Наряду с понятием «объекта» класс является ключевым понятием в ООП (хотя существуют и бесклассовые объектно-ориентированные языки, например, Self, Lua; подробнее смотрите Прототипное программирование). Суть отличия классов от других абстрактных типов данных состоит в том, что при задании типа данных класс определяет одновременно и интерфейс, и реализацию для всех своих экземпляров, а вызов метода-конструктора обязателен. На практике объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход за время своего развития накопил множество рекомендаций (паттернов) по созданию классов и иерархий классов. Класс в языке C++ создаётся следующим образом:
class MyClass: public ParentClass // ParentClass — класс-предок, если таковой имеется
{
public: // элементы в этой секции доступны из любой части программы
MyClass(); // конструктор
~MyClass(); // деструктор
protected: // элементы в этой секции доступны из класса и его потомков
private: // элементы в этой секции доступны только из класса; это область доступа по умолчанию
};
После своего создания класс считается полноценным типом данных и, следовательно экземпляры класса создаются следующим образом:
MyClass myinstance;
Обращение к членам класса:
myinstance.classmember
Уничтожается экземпляр класса, как и любая переменная, только в случае, если функция, в которой он был создан, заве

5
0
Левша
Левша

мне больше понравилось когда это назвали инкапсуляцией, сразу стала понятнее сама идея, только плюсы от таких структур кроме удобства в больших проектах для персонала я пока не понял, по привычке пишу без них, мне бы наглядный пример маш кода как класс строится и из чего состоит, в отладчике я так и не понял

1
Андрей Сучков
Андрей Сучков

#include
#include
#include

class String
{
public:
String(char const* const p_ = "")
{
p = new char[strlen(p_) + 1];
strcpy(p, p_);
}
String(String const& s)
{
p = new char[strlen(s.p) + 1];
strcpy(p, s.p);
}
String& operator=(String s)
{
Swap(*this, s);
return *this;
}
virtual ~String()
{
delete[] p;
p = 0;
}
friend std::ostream& operator<<(std::ostream& ost, String const& s)
{
return ost << s.p;
}
protected:
char* p;
void Swap(String& lhs, String& rhs)
{
std::swap(lhs.p, rhs.p);
}
};

class DString : public String
{
public:
explicit DString(char const* const p_ = "", char const* const p1_ = "") : String(p_)
{
p1 = new char[strlen(p1_) + 1];
strcpy(p1, p1_);
}
DString(DString const& ds) : String(ds)
{
p1 = new char[strlen(ds.p1) + 1];
strcpy(p1, ds.p1);
}
DString& operator=(DString ds)
{
Swap(*this, ds);
return *this;
}
~DString()
{
delete[] p1;
p1 = 0;
}
friend std::ostream& operator<<(std::ostream& ost, DString const& s)
{
return ost << s.p << '\n' << s.p1;
}
protected:
char* p1;
void Swap(DString& lhs, DString& rhs)
{
String::Swap(lhs, rhs);
std::swap(lhs.p1, rhs.p1);
}
};

int main()
{
DString ds("aa", "bb");
String s = ds;
std::cout << s << std::endl;
return 0;
}

1
Левша
Левша

сильно похоже на механизм библиотек, только встроенный в сам компилятор, я до сих пор обхожусь только функциями

1
Андрей Сучков
Андрей Сучков

Я спать, мозги больше не варя,т диссертация сожрала всё за ночь, сорь помог бы, но больше не могу((((

1
Левша
Левша

я тоже сутки не спал, отладчик мучал

1
ЦЗ
Центр Занятости

Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++. И где здесь математика???

0
0
ЦЗ
Центр Занятости

Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования — ООП. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++.

0
0
ЦЗ
Центр Занятости

Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++.

1
0
Левша
Левша

там само слово концепция уже высш мат, причем довольно мутный

1
АБ
Александр Боженков

В любом высокоуровневом языке программирования "класс" это некий шаблон предназначенный для многороазового использования.

3
0
Левша
Левша

мне уже рассказали, это инкапсуляция, к шаблонам отношения не имеет

1
АБ
Александр Боженков

Тих,.., Тих..., Тихо!!! Инкапсуляция это - сокрытие, т.е. Вы используете некий шаблон для решения некоей задачи не вдаваясь в подробности решения самой задачи. Т.е. берете шаблон, задаете ему параметры и на выходе получаете результат.

1
Левша
Левша

который сам по себе всего лишь пакет с данными и функциями имеющий заголовок и механизмы по репликации, инкапсуляция это структуирование, объединение, сокрытия я там не нашел, разве что фокус переменных меняется и автоматизация по использованию памяти идет в нагрузку

1
Филосыч
Филосыч

приблизительно тоже, что и класс в других языках программирования... возможность создавать объекты, со своими параметрами

41
0
Филосыч
Филосыч

да не так уж там и абстрактное

1
Левша
Левша

фильтр многозаходной, наложение канала, убирать цвета

1
Филосыч
Филосыч

а это ты видимо уже о своем...а я про ооп

1
Левша
Левша

там можно классами уравнения оформить

1
Филосыч
Филосыч

ладно

1
Дмитрий Самойленко
Дмитрий Самойленко

Объект с предопределенными свойствами, процедурами создания, уничтожения, набором функций и процедур с ними связанных

25
0
Левша
Левша

надо тогда в гугле посмотреть, что да как, а то плата на которой светодиоды в куб собраны неясно по схеме каков принцип работы

1
Дмитрий Самойленко
Дмитрий Самойленко

Посмотрите. Насколько помню их его рассказов там довольно просто логика программировалась, чуть ли не интерпритатор команд был, не нужно было сильно программировать

1
Левша
Левша

я пока вспоминаю как прямую выводить на маш коде, давно не писал уже, как вывести прямую на матрице, я вроде через синус делал давно, сейчас что то не выходит

1
Дмитрий Самойленко
Дмитрий Самойленко

Возьмите готовые библиотеки, там все уже оптимизировано. Конечно можно самому, но это время и не факт, что оптимальнее будет. Как минимум придется оптимизировать код для вертикальных, горизонтальных, наклонных. Если все-таки писать будете, то лучше не через синус, это вычисляемое значения с плавающей точкой, т.е. медленно. Лучше расчитать на старте массив значений от разрешения экрана и использовать как коэффициенты в уроавнении прямой y=ax+b

1
Левша
Левша

тоже подумывал не через синус, а коэффициентами, но синусы можно посчитать в таблицу, а потом просто из нее вызывать значения

1
АК
Алексей Калашников

то же что и в остальных объектно-ориентированных языках программирования. учите матчасть.

10
0
АК
Алексей Калашников

даже на турбо-паскале есть классы и объекты. 🙂 в бауманке у нас да, обектам учат. но не на всех спецальностях

1
Левша
Левша

турбо паскалем когда то занимался, пока он не помер, классами то я пользуюсь, только не могу спроектировать именно для пользы себе, мне теория нужна, сам смысл делать структуры микроопераций именно в такой форме

1
АК
Алексей Калашников

да вы эстет 🙂 Интересно конечно. Вообще в логическом программировании особого смысла в классах нет. тем более если Вы всякие там драйвера пишете. Это для графических приложений больше нужно, для обработки массивов данных может пригодиться. А вы уверены что Вам нужно использовать классы если у Вас всё на микроуровне, на ассемблере.

1
Левша
Левша

мне когда началась необходимость интерфейсы делать, сразу стало понятно что придется зубрить апи, а где апи там и классы, после драйверов кажется слишком странным такой стиль и автоматизация, особенно как объекты начинают есть память и стек дергать, классы все же теперь заставляют учить, все мосты ОС построены на ООП модели, я например рутинные вещи в VBA делаю, пусть он и тормозной, но у него нет прямых доступов к ресурсам, вот сейчас и читаю как к экзели приделать модуля для более низкого уровня

1
АК
Алексей Калашников

уф. ну удачи Вам в этом деле. не лёгкая работа.

1
Антон Баранов
Антон Баранов

не си а DC++ это язык на чём написана программа крупнейшей файлообменной системой хабов

27
0
Левша
Левша

примерно тем же занимаюсь, только это микрофон и фотодиоды и датчик движения, построено на ардуино, а чпу по большому счету это драйвер принтера плюс 3я ось, я ооп там вообще не пользуюсь, отлаживать по незнанию тяжело, все упирается на написание конвертера например для 3д студии, просто по прикладным библиотекам мало информации, приходится придумывать велосипеды

1
Антон Баранов
Антон Баранов

тяжёлый случай ,ЧПУ токарный станок из драйвера от принтера через ардуино и через 3д студию ещё ты хочешь загружать туда, как всё это связать не представляю . есть такой вариант если загружать картинку в принтер где цветовая палитра будет означать глубину врезки резца например белый это ось патрона, чёрный это максимально назад резец отведён, и каждая строка печати принтера это один проход резца с лева на право и снова в лево .но как перевести операции в оттенки изображения хз

1
Левша
Левша

в оттенки проще всего, там большая свобода выбора, я на роботе с датчиком движения давно отработал управление моторами, просто чтобы увязать все воедино надо все сдк в одну собрать, а классами я почти не пользовался никогда, у меня вместо удобства чтения получается черти что разберешь, а под 3д студию плагин скоро доделаю, там оказалось проще чем можно подумать

1
Антон Баранов
Антон Баранов

в ютуб выложишь потом если получится ?

1
Левша
Левша

смысла не вижу, там 3д принтеров полно

1
Евгений Волков
Евгений Волков

😄 ну это такое название для объектов чтоб удобнее программировать было)

8
0
Левша
Левша

объект не однозначно переводится в код, мне и интересно почему майкрософтский "рендер" более тормозной чем например intel или wacom

1
Евгений Волков
Евгений Волков

все зависит от того как грамотно создали продукт.

1
Левша
Левша

по системному программированию с литературой беда, все через отладчик приходится делать, а это время

1
Евгений Волков
Евгений Волков

да без отладчика никуда.

1
Левша
Левша

по библиотекам мало информации, так что чужие наработки просто так не возьмешь себе, все приходится делать заново

1
Лия Литвинова
Лия Литвинова

Почему именно в С++? Это вроде как кроссплатформенное понятие ООП?

9
0
Лия Литвинова
Лия Литвинова

Ой, я так плохо выгляжу? На пхп никак не потяну?:))))

1
Левша
Левша

препроцессор штука интересная, но больше скриптами люблю страницы генерировать

1
Лия Литвинова
Лия Литвинова

Я с вебками вообще никак 🙂

1
Лия Литвинова
Лия Литвинова

Стороннее ПО на питоне, есть вариант вставить свои заморочки на ПХП

1
Левша
Левша

я в линях мало чего понимаю, по ним литературы нет нормальной, как только начинаешь копаться в поднаготной, сразу ничего найти не удается

1
Nineli Neonila
Nineli Neonila

основные концепции объектно-ориентированного программирования

2
0
Левша
Левша

мне надо компилятор написать с классами, а я в упор не пойму что это такое и как их реализовать

1
Nineli Neonila
Nineli Neonila

ничем не могу помочь я в принципе частично теоретик

1
Ро
Розочка

Международная система единиц измерения физических величин..

1
0
Левша
Левша

здесь про язык программирования

1
ОА
Оксана Алексеева

А вы что не знаете? Вот уморил, это же всем известно.

7
0
Левша
Левша

мне с точки зрения генерации машинного кода это интересно, как абстракцию переводят в микрооперации

1
ОА
Оксана Алексеева

не такая уж это и абстракция. Есть два пути. Компилятор и интерпретатор.

1
Левша
Левша

еще JIT есть, мне просто интересно как делать ассемблерные вставки в класс, само оптимизирующийся код, когда одна часть генерирует вторую часть и наблюдает за собой в памяти

1
ОА
Оксана Алексеева

JIT это вариант компиляции. Динамический. Но вы молодец.

1
Левша
Левша

я так понял классы из ооп ввели в си для удобства навигации по функциям, такой как бы интерфейс между базами данных и машинным кодом, только некоторые приемы до конца мне не ясны, например как эти структуры уходят в стек и как генерируют класс в машинный код, вообще как ими пользоваться, потому что мне и одними функциями пользоваться вполне устраивает

1
ОА
Оксана Алексеева

Не могу помочь, я не программист, знакома немного, так как сдавала сертификации разные по работе.

1
Левша
Левша

я пока библиотеку для VisualBasic for Applications пишу, потому что в вижуал бейсике нету например указателей, а он мне нужен для экзели, в ней обычно все проекты расписываю и делаю в ней прототипы разные, весьма удобный способ, табличный процессор вообще не заменим для этих целей

1
Да
Да

если коротко - абстрактный тип в программировании

65
0
Марсианка
Марсианка

Разве прошёл, надо в ВУЗе поинтересоваться. Недавно сын моей подруги восстановился на исторический, давно учился, бросал 2 ли 3 раза... Но восстановился на заочное отделение сейчас. Так по новой программе надо досдать 12 экзаменов, сдаёт... решил доучиться, диплом нужен. Он уже и грузчиком на мусорке работал, и в магазине продавцом сантехники, и плитку клал тротуарную в России. В итоге - пошёл учиться дальше...

1
Левша
Левша

у меня примерно также и получается, тем более для диплома тем много созрело

1
Марсианка
Марсианка

Восстанавливайтесь, узнайте, у них архивы есть, что Вы учились... Вдруг ещё не прошли сроки...

1
Левша
Левша

ну до конца программу добью, может и обращусь, мне ездить далеко будет не выгодно, здесь филиал академии образования открылся, намного ближе

1
Марсианка
Марсианка

Так может, взять надо какую справку, что учился, вдруг предметы совпадут, что сдавали.Вдруг учтут и не надо лишнее сдавать будет... В любом случае надо узнать там, где учились. Можно и по электронке узнать же...

1
Peva
Peva

А как у вас такое получилось? ↯380↯ В символах?

7
0
Левша
Левша

есть такая программа charmap.exe в ней можете любой выбрать и вставить себе

1
Peva
Peva

Спасибо

1
Левша
Левша

а можете прямо из поля сразу вставить, тоже будет видно

1
Peva
Peva

↯↯↯ а еще что там есть интересного?

1
Левша
Левша

сердечки всякие, их 65535 всего, найдете что хотите

1
Peva
Peva

А не опасна эта программа? Если скопирую то КУДА ее мне у себя оставить?

1
Левша
Левша

она уже есть в комплекте с системой

1
АН
Ам Не Зи Я

Это только кодоложец сможет вам ответить...

6
0
КБ
Кто Бы Мог Подумать

Стракт с парой мелких отличий

1
Левша
Левша

мне и профессор мало что смог объяснить, то что в учебниках пишут на практике отличается в разы

1
Левша
Левша

у языков высокого уровня много разных механизмов генерации кода, и по ним мало внятной документации

1
КБ
Кто Бы Мог Подумать

А причем тут генерация кода? Вы хотите понять на уровне ассембли или рапсоди?

1
Левша
Левша

на уровне кодов, потом в отладчике мало понятно как класс представлен

1
АН
Ам Не Зи Я

встретились программисты))...

1
СП
Самая Пустая

экземпляр соответствующего класса 😋

1
0
Левша
Левша

мне интересно как это в машинный код генерируется, я больше на ассемблере сижу

1
Елена
Елена

язык програмирования для начинающих

1
0
Левша
Левша

эту тайну почему то нигде не раскрывают, видимо придется в отладчике долго копаться и взломом догадываться

1
Лиза Устименко
Лиза Устименко

без плюсиков пожалуйста мне можно!

10
0
Левша
Левша

мне больше раскрашивать нравится, или коллажи делать, планшет сломался, теперь карандашом рисую и через сканер перевожу образцы

1
Левша
Левша

шоп чем удобен, можно через экзель программно управлять эффектами, а то некоторые вручную делать надоело

1
Лиза Устименко
Лиза Устименко

я лично всегда в ручную делала и нормально!Просто привыкнуть надо)

1
Левша
Левша

некоторые вещи можно только программно сделать, а мышью особо сильно не наиграешься, я раньше тоже вручную делал все, но потом надоело зря время тратить и пересел на скрипты

1
Лиза Устименко
Лиза Устименко

попробую)Ну ладно пока я спать!

1
Следующая страница
Похожие вопросы
Вот популярные языки Программирования! *Акцесс*, *Си++, Визуал Бэйсик Питон. Ява. Делфи. Рнр. Ruby. C#. Js. Swift.* К…
Что же такое класс в Си++?
Мир делится на два класса — одни верят в невероятное, другие совершают невозможное? А вы ?
как прочитать немецкий текст русскими буквами стр 48 упр 1 7 класс
У вас в классе второгодники были? Если да, то как складывалось общение с ними?
ИИ считывает эмоции и мимику всех учеников в классе и на основе алгоритмов определяет того, кто плохо подготовился. В…
ну вот через час конец работе..и аванс дали.Класс!!!!!
Студент спрашивает у студента: - Тебе делали манту в 3-ем классе? - Да, а чё? - А ты не в курсе мыться уже можно?😁😁😁