Как создать объект в Си++ = c++ создание объекта , создание нового объекта c++ = агрегация классов c++
Primary tabs
Я приведу здесь только часть кода, иллюстрирующего работу с классами в Си++.
В частности мы здесь создаём новый объект =
Intel2000 * newcpu =new Intel2000("x86",3,123654); // СОЗДАНИЕ ОБЪЕКТА В(на)) СИ++ ))(в контексте - смотрите код ниже)
а также всё более "навороченное" взаимодействие классов.
Смотрите полные рассуждения о решении данной задачи
/*далее опять пример паблик наследования
ЭТО КЛАСС УЖЕ КОНКРЕТНЙ МОДЕЛИ ПРОЦЕССОРА*/
class Intel2000 : public Intel // а вот уже некий конкретный проц от интел
{
public:
Intel2000(char*,int,int); // конструктор для класса данной можели опишем снаружи
private:
int id; // пусть серийный номер будет не публичен
// иные объекты описывающие компоненты компьютера
// не смогут узнать его))
};
// ну пора бы уже написать АГРЕГИРУЮЩИЙ КЛАСС - компьютер
/*здесь мы не будем демонстрировать наследование - просто напишем один
класс, который продемонстрирует.*/
class PC
{
public:
Mboard mboard;// судя заряжаем класс описывающий материнскую плату
Display display;// судя заряжаем класс описывающий материнскую плату
CPU cpu;// слот для устройства ввода
// - указываем используемый конструктор
PC (Mboard mboard):cpu("x86",2) // "x86" и 2 - параметры по умолчанию
/* для начала сборки компьютера
в его конструктор достаточно просто передать объект "материская плата"
причём любой модели
ВНИМАНИЕ!= после параметров конструктора идёт список инициаллизации-
он необходим для всех членов-классов у которых
нет конструктора "без аргументов" (= назв.- "конструтор по-умолчанию")
- такой (= "пустой" -не принимающий аргументов)
конструктор надо явно прописыть для всех классов,
определяющих собственнный конструтор с параметрами.
Если же конструтор по умлочанию отсутствует, то
следует указать принимаемые аргументы в списке
инициаллизации -ч то и сделано выше для cpu =
:cpu("x86",2)
*/
{
PC::mboard=mboard; // закрепляем её))
Intel2000 * newcpu =new Intel2000("x86",3,123654); // СОЗДАНИЕ ОБЪЕКТА В(на)) СИ++ ))
// далее переопределим те данные,
//что были в списке инициализации и снабдим наш класс конкретным процессором
PC::cpu = *newcpu;// "прикручиваем" процессор - а вот и переопределение
// выше происходит замена одного указателя на другой - так как фактически
// объект это указатель из несокльких байт
// cpu = newcpu;
}
PC():cpu("x86",2) // всё-таки определим конструктор по-умолчанию
{
}
void AddDisplay(Display display)
{
if (display.neededmem<=PC::mboard.msize)
{
PC::display=display;
showmess("OK","display was added to your PC =))");
}
else showmess("PC_ERROR","you haven't enough to add this display");
}
};- Log in to post comments
- 6884 reads