Q:Как в C++ проинициализировать массив?
A:Примеры:
int array1[]={1,2,5,10,20,50,10,20,50,10,20,50,10,20,50};
int array2[5]={1,2,5,10,20};
int array3[5]={1,2};
//для члена класса
class A
{
static int array[];
};
int A::array[]={1,2,5,10,20,50,10,20,50,10,20,50,10,20,50};
Q:Какой функцией можно генерировать случайные числа?
A:функция rand() возвращает псевдослучайное число в
диапазоне от 0 до RAND_MAX (==0x7fff)
#include <climits>
int rand( void );
Q:Имеется класс с конструктором, который принимает параметры.
Есть наследник. Как из конструктора наследника передать параметры
конструктору базового класса?
A:child: public parent
{
public:
child(mytype var1): parent(var1) {}
};
Q:Столкнулся с такой ситуацией:
Имеется два класса. Class1 содержит член данных типа Class2.
Class2 m_Data;
а Class2 содержит указатель типа Class1
Class1* m_pData;
то есть перед Class1 нужно прописать #include "Class2.h",
а перед Class2 - #include "Class1.h". Компилятор выдает
кучу ошибок переопределения. Как решается такая ситуация?
A:Если Class2 содержит только указатель на Class1, достаточно
объявить Class1 без определения. Таким образом можно
разорвать этот замкнутый круг.
Этот прием годится лишь для инстанцирования указателей,
поскольку под указатель на платформе x86 отводится 4 байта
независимо от типа, на который он указывает.
class Class1;
class Class2
{
...
private:
Class1 *m_pClass1;
...
};