1.Что такое обратный вызов?
2.Что такое указатель на функцию?
3.Для чего используют указатели на функции?
4.Как определить указатель на функцию?
5.Какие синтаксические конструкции придает C ++ для создания пользовательских типов?
6.Для чего используют безымянные перечни?
7.Как переменной типа перечня присвоить целое значение?
8.Для чего используют операцию ->?
9.В чем заключаются особенности объединений и для чего их используют?
10.Что такое класс и из чего он состоит?
11.Что такое инкапсуляция?
12.Какие уровни доступа к элементам класса поддерживает C ++?
13.Что такое функции доступа?
14.Можно ли в C ++ вне класса реализовывать методы, объявленные внутри класса?
15.Что такое конструктор и как он вызывается?
16.Сколько конструкторов без параметров может быть создан в одном классе?
17.Как создать класс, в котором нет ни одного конструктора?
18.Что такое конструктор копирования и когда его следует определять?
19.Что такое деструктор и как он вызывается?
20.Сколько деструкторов может быть определено в классе?
Другие языки программирования и технологии
Вопросы по программированию, коротко ответ на каждый вопрос, пожалуйста если кто то в этом разбирается помогите !!!
1. callback функция.
class SoundCallback{
virtual void OnEnd() = 0;
};
class MyCallback : public SoundCallback{
void OnEnd(){
printf("Воспроизведение звука завершено\n");
}
};
class Sound{
SoundCallback* callback;
void DoPlay(){
if( audio_stream == end ){
if( this->callback ){
this->callback->OnEnd();
}
}
}
public:
Sound(){ callback = nullptr; }
~Sound(){ callback = nullptr; }
void SetCallback( SoundCallback* cb ){
this->callback = cb;
}
void Play(std::string file){ DoPlay();...}
};
2.
void (*funk)(int);
funk(1);
typedef void (*myfunc)(int);
myfunc f;
f(123);
using myfunc = void (*)(int);
myfunc f;
f(123);
3. Думаю в большей степени для расширяемости программы. Хотя есть всякие делегаты, std::function и т. д для этого.
4. см 2.
5. using s32 = int;
typedef int s32
#define s32 int
class MyClass;
struct MyStruct;
enum MyEnum;
union MyUnion;
6. непонял
7. непонял
8. это доступ к полям класса, для объекта указателя
MyClass o;
o.funk(); // обычный
MyClass* o = new MyClass(some_params);
o->funk(); // для указателя
9. Указанные данные храняться в одном месте.
union RGBA{
int i;
char c[4];
};
RGBA color;
color[3] = 255; // R
color[2] = 0; // G
color[1] = 0; // B
color[0] = 255; // A
std::cout << std::hex << color.i;
10. Это пользовательский тип. Состоит из функций-членов, переменных, защищённых, закрытых или открытых, вложенных в него структур объединений перечислений классов, возможно ещё чего из современных технологий
11. Это когда данные находятся внутри класса.
12. public, protected, private
13. Так как переменные могут быть закрыты от пользователя изменять значения переменных можно через функции
class Hero{
int health; // закрытая переменная
public:
Hero(){health=100;}
~Hero(){}
int GetHealth(){return this->health;} // функция доступа
void SetHealth(int v){this->health=v;} // функция доступа
};
14. Да. Либо в .h файле пометив __forceinline / inline __attribute__((always_inline)) (не проверял последнее).
Либо в отдельном .cpp файле. Лучше в .cpp файле
15. Это функция. Конструктор вызывается при создании объекта. В нём принято делать инициализацию переменных.
16, 1 (верно? я этот бред не проверял. вроде и так понятно)
17. просто без конструктора. Будет создан конструктор по умолчанию.
18.
MyClass( const MyClass& other );
MyClass( MyClass& other );
MyClass( volatile const MyClass& other );
MyClass( volatile MyClass& other );
если его нет то он так же создаётся неявно.
в этом случае произойдёт обычное копирование данных (в том числе и адресов указателей).
по этому если есть указатели то необходимо делать копирующий и перемещающий конструктора, копирующее и перемещающее присвоения
19. Вызывается при выходе из функции.
class S{
int* i;
public:
S(){ i = new int [100500]; }
~S(){ delete []i; }
};
20. 1 (нет?)
class SoundCallback{
virtual void OnEnd() = 0;
};
class MyCallback : public SoundCallback{
void OnEnd(){
printf("Воспроизведение звука завершено\n");
}
};
class Sound{
SoundCallback* callback;
void DoPlay(){
if( audio_stream == end ){
if( this->callback ){
this->callback->OnEnd();
}
}
}
public:
Sound(){ callback = nullptr; }
~Sound(){ callback = nullptr; }
void SetCallback( SoundCallback* cb ){
this->callback = cb;
}
void Play(std::string file){ DoPlay();...}
};
2.
void (*funk)(int);
funk(1);
typedef void (*myfunc)(int);
myfunc f;
f(123);
using myfunc = void (*)(int);
myfunc f;
f(123);
3. Думаю в большей степени для расширяемости программы. Хотя есть всякие делегаты, std::function и т. д для этого.
4. см 2.
5. using s32 = int;
typedef int s32
#define s32 int
class MyClass;
struct MyStruct;
enum MyEnum;
union MyUnion;
6. непонял
7. непонял
8. это доступ к полям класса, для объекта указателя
MyClass o;
o.funk(); // обычный
MyClass* o = new MyClass(some_params);
o->funk(); // для указателя
9. Указанные данные храняться в одном месте.
union RGBA{
int i;
char c[4];
};
RGBA color;
color[3] = 255; // R
color[2] = 0; // G
color[1] = 0; // B
color[0] = 255; // A
std::cout << std::hex << color.i;
10. Это пользовательский тип. Состоит из функций-членов, переменных, защищённых, закрытых или открытых, вложенных в него структур объединений перечислений классов, возможно ещё чего из современных технологий
11. Это когда данные находятся внутри класса.
12. public, protected, private
13. Так как переменные могут быть закрыты от пользователя изменять значения переменных можно через функции
class Hero{
int health; // закрытая переменная
public:
Hero(){health=100;}
~Hero(){}
int GetHealth(){return this->health;} // функция доступа
void SetHealth(int v){this->health=v;} // функция доступа
};
14. Да. Либо в .h файле пометив __forceinline / inline __attribute__((always_inline)) (не проверял последнее).
Либо в отдельном .cpp файле. Лучше в .cpp файле
15. Это функция. Конструктор вызывается при создании объекта. В нём принято делать инициализацию переменных.
16, 1 (верно? я этот бред не проверял. вроде и так понятно)
17. просто без конструктора. Будет создан конструктор по умолчанию.
18.
MyClass( const MyClass& other );
MyClass( MyClass& other );
MyClass( volatile const MyClass& other );
MyClass( volatile MyClass& other );
если его нет то он так же создаётся неявно.
в этом случае произойдёт обычное копирование данных (в том числе и адресов указателей).
по этому если есть указатели то необходимо делать копирующий и перемещающий конструктора, копирующее и перемещающее присвоения
19. Вызывается при выходе из функции.
class S{
int* i;
public:
S(){ i = new int [100500]; }
~S(){ delete []i; }
};
20. 1 (нет?)
Похожие вопросы
- Почему почти все задания по программированию на ответах требуют решения на PascalABC?
- кто разбирается, помогите, пожалуйста)
- помогите с вопросами пожалуйста!
- Уважаемые программисты, у меня вопрос, пожалуйста отзовитесь)
- Товарищи программисты ответьте на вопрос пожалуйста!
- Помогите пожалуйста избавиться от "синего экрана смерти"! кто поможет, тому +10 баллов гарантирую!
- Помогите исправить ошибки в коде на Pascal, чтобы он выводил верные ответы. Или можете сами пожалуйста написать пжпжпж!
- Кто разбирается, помогите (10б)
- Несколько вопросов о сайтах, рекламодателях и где деньги лежат . Помогите разобраться
- У меня вопрос? кто пользовался программами бинарных опционов, кому то помогло заработать?