Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Почему в абстрактном классе можно вызвать конструктор но объект создать нельзя?

31.01.2020, 16:41. Показов 6137. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A {
protected:
  std::string str;
public:
  A(std ::string s) :str(s) { std::cout << "const"; };
  virtual std::string test() = 0;
};
 
class B : public A{
public:
  B(std::string s) :A(s) {  }
  std::string test() {
    return str;
  }
};
Добавлено через 8 минут
я так понимаю это сделано для того чтобы инициализировать поля абстрактного класса?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2020, 16:41
Ответы с готовыми решениями:

Создать массив в базовом абстрактном классе, и его передать функциям производных классов
есть полностью абстрактный (виртуальный) класс. там все функции виртуальные и равны 0. Назовем его class A есть 3 производных ОТ НЕГО...

Вызвать конструктор произвольного класса в другом классе
Здравствуйте! Есть необходимость вызвать конструктор какого-либо класса в методе другого класса. Примерно так: class A{}; class B:...

У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B?
#include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ public: A (){}; class...

14
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
31.01.2020, 17:11
а что делать если я вызову A::test() у объекта абстрактного класса?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 20:13
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

ReYalp, объект абстрактного класса не существует как отдельный объект. Он создаётся существует и умирает как подобъект - часть объекта наследующего класса. Он доступен по указателю извне. В области самого объекта наследника (его почему-то называют подобъектом хотя он больше и включает родительский огрызок, но мозг матемавтика - загадка) можно обращаться к методам родителя. Там кстати можно написать A::test()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
class A {
protected:
  std::string str;
public:
  A(std ::string s) :str(s) { std::cout << "const"; };
  virtual std::string test() = 0;
   virtual void simpleAsVenik(){cout<<"\nvenikBase";};
};
 
class B : public A{
public:
  B(std::string s) :A(s) {  }
  std::string test() {
    return str;
  }
 
  void compileTimeError(){A::test();}
    void simpleAsVenik(){cout<<"\nvenikDerived";}
   void simpleAsVenikBaseConsumer(){A::simpleAsVenik();};
};
int main()
{
B willDie("mustDie");
//willDie.compileTimeError();//all compils without that call, but there you have
//obj\Release\main.o:main.cpp:(.text.startup+0x14f)||undefined reference to `A::test[abi:cxx11]()'|
//линковщик возмущается)
willDie.simpleAsVenikBaseConsumer();
return 0;
}
но при вызове - ошибка компиляции)
Но если бы метод был обычным определённым методом то всё было бы нормально. То есть да, методы абстрактного класса вызываются в контексте наследника, если это возможно. Конструктор - для инициализации части принадлежащей родителю.
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
31.01.2020, 20:27
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но если бы метод был обычным определённым методом то всё было бы нормально.
Не поверите, но если для "обычного" метода не сделать реализацию, то тоже будет undefided reference.
А если для чисто-виртуальной функции сделать реализацию, то undefined reference и для него не будет.
C++
1
2
3
4
std::string A::test()//Определяется вне класса
{
    return "";
}
https://rextester.com/QGD50569

Цитата Сообщение от IGPIGP Посмотреть сообщение
но при вызове - ошибка компиляции
Линковки.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 20:30
Цитата Сообщение от Croessmah Посмотреть сообщение
Не поверите, но если для "обычного" метода не сделать реализацию, то тоже будет undefided reference.
А если для чисто-виртуальной функции сделать реализацию, то undefined reference и для него не будет.
Не поверите, но то что я написал зависит от того как вы поняли слово "обычный". Вы решили его не понять и это легко получилось. А вы напишите новичку абстрактный виртуальный метод с реализацией по умолчанию. А потом объясните что и к чему. И вопрос утонет в частностях и не станет полезен новичкам которые будут его искать по ключам в сети.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
31.01.2020, 20:35
IGPIGP, другим словами, виртуальность (даже чистая) никак не влияет на ошибку в том контексте, в котором Вы написали о ней. Всё дело лишь в том, что Вы умышленно сделали ошибку, причина которой кроется совершенно в другом, и никак не связана с обсуждаемой темой.

Добавлено через 2 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
А вы напишите новичку
Мне порой кажется, что это Вы только что открыли свой первый учебник по C++. Без обид, но складывается именно такое впечатление.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 20:40
Цитата Сообщение от Croessmah Посмотреть сообщение
но при вызове - ошибка компиляции
Линковки.
Это не ошибка выполнения.
Цитата Сообщение от IGPIGP Посмотреть сообщение
B willDie("mustDie");
//willDie.compileTimeError();//all compils without that call, but there you have
//obj\Release\main.o:main.cpp: (.text.startup+0x14f)||undefined reference to `A::test[abi:cxx11]()'|
//линковщик возмущается)
в коментарии я уточнил что это завершающая стадия - линковка, но это опять же не имеет значения. В индустрии компилятором принято называть кучу всего.
Croessmah, я ждал (был занят) когда же кто-то напишет что-то и как видите до 8-ми вечера ни кто не среагировал. Я не хочу сшлушать придирки. Напишите свой ответ. Это больше работы, но полезнее для дела.

Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Всё дело лишь в том, что Вы умышленно сделали ошибку, причина которой кроется совершенно в другом, и никак не связана с обсуждаемой темой.
Это люди без дерьма обычно объясняют. Что за намёки?

Добавлено через 2 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но если бы метод был обычным определённым методом то всё было бы нормально.
Это возможно не лучшая формулировка, но в ней сказано что метод должен быть определён. Слово обычный в данном контексте лишь к этому и относится.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
31.01.2020, 21:06
Цитата Сообщение от IGPIGP Посмотреть сообщение
но в ней сказано что метод должен быть определён
Дело не столько в формулировке, сколько в коде. Если чисто-виртуальной функции сделать определение, то ошибки тоже не будет. В чем тогда суть этого кода? Что он показывает? А ничего. Это просто код, в котором сделана ошибка, никак не связанная с проблемой. Он не показывает никаких отличий. Именно в этом заключается моя "придирка".

Цитата Сообщение от ReYalp Посмотреть сообщение
но объект создать нельзя?
Сначала о предназначении абстрактных классов. В C++ абстрактный класс может быть использован только как базовый класс, и создать самостоятельный объект абстрактного класса нельзя. Суть абстрактного класса состоит в том, чтобы заставить наследника реализовать некоторый обязательный набор функций. В других языках подобный языковой механизм часто называют интерфейсом. Но, в C++ абстрактный класс может содержать не только чисто-виртуальные функции, но и всё остальное, что присуще классу.

Теперь своими словами и не очень точно о конструкторах. В C++ объект считается созданным после завершения работы конструктора. Если нужный конструктор недоступен - объект не создать. Конструкторы наследников сами вызывают конструкторы базового класса. В этом плане абстрактные классы ничем не отличаются. Если мы поудаляем все конструкторы, то у наследника будут проблемы с созданием подобъекта нашего абстрактного класса. Также, как было сказано выше, абстрактные классы могут содержать и данные, поэтому, да, Вы правы, конструктор в классе, в том числе и в абстрактном, нужен для инициализации объекта ("придания" ему некоторого начального состояния). Часто в абстрактных классах отсутствуют данные и нет определенных пользователем конструкторов.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 21:22
Однако слова:
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы умышленно сделали ошибку, причина которой кроется совершенно в другом, и никак не связана с обсуждаемой темой.
Оставленные без объяснения, несмотря на моё предложение их дать вас характеризует полностью. Отсюда и моё следующее предложение:
Croessmah, видимо нужно вернутся к практике взаимного игнора. Я обязуюсь больше не видеть ваших постов. Жду аналогичных действий. Пишите всё что хотите. Но не цитируйте и не трогайте мой ник. Места и времени достаточно, чтобы показать всё что угодно. Дерзайте.
Цитата Сообщение от Croessmah Посмотреть сообщение
Это просто код, в котором сделана ошибка, никак не связанная с проблемой. Он не показывает никаких отличий.
Как раз там есть метод с реализацией и показано как работает вызов от имени базового класса.
ReYalp, вызов методов родителя для случая абстрактного базового класса не относился к теме напрямую но разуж такой разговор зашёл. Посмотрите как можно предложить реализацию чисто виртуального метода. Это плюшка, для того чтобы наследники могли использовать общий код если это им нужно. В этом случае не нужно его переписывать многократно и любые изменения делаются в реализации по умолчанию. Я не думаю, что этот частный случай, принципиален в данном вопросе, но пусть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
class A {
protected:
  std::string str;
public:
  A(std ::string s) :str(s) { std::cout << "const"; };
  virtual std::string test() = 0;
   virtual void simpleAsVenik(){cout<<"venikBase\n";};
 
   virtual void autoowerriden()=0   ;
};
 
 void A::autoowerriden()
   {
       cout<<"default realization\n";
   }
 
class B : public A{
public:
  B(std::string s) :A(s) {  }
  std::string test() {
    return str;
  }
 
  void compileTimeError(){A::test();}
    void simpleAsVenik(){cout<<"venikDerived\n";}
   void simpleAsVenikBaseConsumer(){A::simpleAsVenik();};
   void autoowerriden(){A::autoowerriden();}
};
int main()
{
B willDie("mustDie");
//willDie.compileTimeError();//all compils without that call, but there you have
//obj\Release\main.o:main.cpp:(.text.startup+0x14f)||undefined reference to `A::test[abi:cxx11]()'|
//линковщик возмущается)
willDie.simpleAsVenikBaseConsumer();
willDie.autoowerriden();
return 0;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
31.01.2020, 21:26
Цитата Сообщение от Raali Посмотреть сообщение
а что делать если я вызову A::test() у объекта абстрактного класса?
Чисто-виртуальная функци-член может иметь определение, как бы странно это не звучало. Определять её можно только вне определения класса. Если Вы вызовете напрямую не реализованный A::test, то получите ошибку линковки. Однако, если вызов произвести косвенно при создании или уничтожении объекта, то получим неопределенное поведение, и, скорее всего, крах приложения.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
struct IBase
{
public:
    IBase() {
        foo();//"Прямой" вызов. Ошибка линковки.
        bar();//Undefined behavior
    }
    void bar() {
        foo();//"Косвенный" вызов. 
    }
    virtual void foo() = 0;
    virtual ~IBase() = default;
};
 
/*
void IBase::foo()
{
}
*/
 
struct Derived: IBase
{
    virtual void foo(){}
};
 
 
int main()
{
    Derived d;
}
https://wandbox.org/permlink/OOSXgO22zNE81EJB

Добавлено через 59 секунд
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но не цитируйте и не трогайте мой ник.
Если Вы будете писать чушь, я буду Вас трогать и цитировать, чтобы у новичков не залипало это в головах и им не приходилось переучиваться после Вашей помощи.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 21:30
Цитата Сообщение от Croessmah Посмотреть сообщение
Если Вы будете писать чушь, я буду Вас трогать и цитировать, чтобы у новичков не залипало это в головах и им не приходилось переучиваться после Вашей помощи.
Вы испортили пост, бросили дерьмовое обвинение и не пошевелились на вопрос о чём оно и не показали ни какой чуши у меня. Хотя чего греха таить - со мной случается. Но пострадал именно данный пост. Как хотите. Я вам больше не отвечаю.
0
31.01.2020, 21:30

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Оставленные без объяснения
Я Вам объяснил, что ошибка никак не связана с чистой виртуальностью и Ваш код ничего не показывает в этом плане. Вы показали ошибку отсутствия определения для любой функции. Зачем Вы акцентируете внимание на ошибке undefined reference, которая не связана с вызовом чисто-виртуальной функции?
Цитата Сообщение от IGPIGP Посмотреть сообщение
то плюшка, для того чтобы наследники могли использовать общий код если это им нужно.
Для этого есть виртуальные функции. Чисто-виртуальные как раз предполагают, что поведения "по-умолчанию" нет.

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 21:44
Цитата Сообщение от Croessmah Посмотреть сообщение
Я Вам объяснил, что ошибка никак не связана с чистой виртуальностью и Ваш код ничего не показывает в этом плане.
Вы объявили что я намеренно сделал ошибку. Я это выделил жирно. Вы пьяны? Что вы объяснили?
Цитата Сообщение от Croessmah Посмотреть сообщение
никак не связана с чистой виртуальностью
У меня не говорится о чистой виртуальности а говорится о методе (имени функции - члена) без реализации. Вы не читаете или не эффективуны в распознавании текста. Вот ещё перл:
Цитата Сообщение от Croessmah Посмотреть сообщение
Цитата Сообщение от IGPIGP Посмотреть сообщение
но при вызове - ошибка компиляции
Линковки.
Хотя к делу никак не относится. Я сказал о линковке. Но вы ищете то чего вам нужно не найти.
А это требует от вас посмотреть первоисточники:
Цитата Сообщение от Croessmah Посмотреть сообщение
Для этого есть виртуальные функции. Чисто-виртуальные как раз предполагают, что поведения "по-умолчанию" нет.
Наследников могут быть десятки. Если не всем нужны свои реализации применяют реализацию по умолчанию вообще без изменений. Просто оборачивают её своим методом. А часть может использовать такой вызов и делать ещё что-то. Но вызовы лишь в контексте класса наследника и этим оно ни чем не отличается от вызовов обычных методов с реализацией. Лучше вам самому поучиться. Безотносительно к тому, что вы конечно классом гораздо выше. Больше вам не отвечаю.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
31.01.2020, 22:25
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вы объявили что я намеренно сделал ошибку. Я это выделил жирно.
Вы сделали акцент на случайной, неожиданной ошибке? Еще раз. Вы намеренно не написали определение чисто-виртуальной функции и выдали это как какую-то особенность именно их. Иначе в коде вообще нет никакого смысла.
Цитата Сообщение от IGPIGP Посмотреть сообщение
У меня не говорится о чистой виртуальности а говорится о методе (имени функции - члена) без реализации.
Опишу свое видение Вашего поста. Что лично я подумал, когда его прочитал.
Вопрос был:
Цитата Сообщение от Raali Посмотреть сообщение
а что делать если я вызову A::test() у объекта абстрактного класса?
Очевидно, что если нет реализации, причем вне зависимости от абстрактности и виртуальности, то будет undefined reference. Если кому-то не очевидно, то можно было об этом написать (что вы и сделали в коде). Однако, Вы своим
Цитата Сообщение от IGPIGP Посмотреть сообщение
обычным определённым методом
акцентировали внимание на том, что эта ошибка из-за того, что это какой-то необычный метод. И вот здесь как раз складывается впечатление, что ошибка именно из-за того, что нельзя реализовать чисто-виртуальный метод и поэтому будет undefined reference. Если бы Вы сказали, что можно реализовать чисто-виртуальную функцию и ошибки не будет - вопросов бы не возникло. Следом же Вы пишите
Цитата Сообщение от IGPIGP Посмотреть сообщение
То есть да, методы абстрактного класса вызываются в контексте наследника, если это возможно.
Они вызываются в любом контексте, если это возможно, и опять же, Вы не слова не сказали о возможности реализации чисто-виртуальной функции. На что Я вам ответил:
Цитата Сообщение от Croessmah Посмотреть сообщение
Не поверите, но если для "обычного" метода не сделать реализацию, то тоже будет undefided reference.
А если для чисто-виртуальной функции сделать реализацию, то undefined reference и для него не будет.
т.е. удалил этот пробел, допущенный Вами. Вы же взъерепенились непойми на что.
Цитата Сообщение от IGPIGP Посмотреть сообщение
А вы напишите новичку абстрактный виртуальный метод с реализацией по умолчанию. А потом объясните что и к чему. И вопрос утонет в частностях и не станет полезен новичкам которые будут его искать по ключам в сети.
Я написал. Где там можно утонуть в частностях?

Цитата Сообщение от IGPIGP Посмотреть сообщение
Не поверите, но то что я написал зависит от того как вы поняли слово "обычный".
В данном контексте оно звучит как "не чисто-виртуальный". Можете перечитать свое сообщение без розовых очков и убедиться в этом самостоятельно.

Добавлено через 5 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Если не всем нужны свои реализации применяют реализацию по умолчанию вообще без изменений.
Тогда делаем функцию просто виртуальной. Зачем ей в таком случае быть чисто-виртуальной? Чисто-виртуальная функция как раз показывает, что наследник должен задать своё поведение. Если это единственная виртуальная функция, а хочется, чтобы класс всё-таки был абстрактным - есть возможность сделать чисто-виртуальный деструктор с определением. Но это уже по-вкусу, только не стоит забывать о том, что виртуальный вызов чисто-виртуальной функции при создании и разрушении объекта приводит к неопределенному поведению. Единственный случай, который я могу предложить - это запрет на неявный вызов этого "поведения по-умолчанию". Т.е. наследник должен явно задействовать поведение "по-умолчанию". Если функция будет просто виртуальной, то это поведение будет задействовано неявно.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.01.2020, 23:27
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы намеренно не написали определение чисто-виртуальной функции и выдали это как какую-то особенность именно их.
Код я всегда пишу намеренно. Почти всегда. А вот ошибки я не делаю намеренно, потому что это подлость. Но вы русского языка не знаете и пишете дичь. Чисто виртуальный метод без реализации подходил для демонстрации по многим причинам, не последней из которых является уже имеющийся в теме код. Остальной бред предвзят и явно злонамерен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2020, 23:27
Помогаю со студенческими работами здесь

Почему структуру нельзя использовать в классе?
#include &lt;iostream&gt; class editor_form { struct prop { int y; }; prop addLineAtHeight(int y); public:

Почему нельзя так делать? Конструктор перемещения?
У меня возникла проблема с хранением объектов класса в векторе векторов, объявленном в другом классе. Класс, объекты которого пытаюсь...

Почему нельзя вызывать конструктор без аргументов?
В чем может быть ошибка? На Visual Studio все работает #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; class...

Почему нельзя объявить интерфейс во внутреннем классе?
Почему нельзя объявить интерфейс во внутреннем классе? Здесь написано: Я не понимаю, почему будет добавлен модификатор static?

Почему нельзя в конструкторе использовать параметр по умолчанию, если конструктор не встроен?
То есть честно говоря, вопрос так надо ставить: почему если конструктор встроенный, то можно использовать параметр (по умолчанию) шаблона...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru