Не могу добавить классам конструкторы и деструкторы
По заданию нужно добавить классам конструкторы и деструкторы . Одному классу добавить конструктор копирования. Каждый конструктор и деструктор должен выводить информацию о методе, который вызывает. Протестировать работу конструкторов и деструкторов создавая и уничтожая объекты в главной программе.
Вот код:
Order.h:
#pragma once
#include <string>
#include <iostream>
#include <vector>
#include <E:\C++ project\ConsoleApplication7\Item.h>
class Order
{
std::string name;
std::string phone;
std::string town;
std::vector<Item*> items;
public:
std::string info() const;
void init(std::string Name, std::string Phone, std::string Town);
void additem(Item* item)
{
items.push_back(item);
}
Order(std::string Name, std::string Phone, std::string Town)
{
std::cout << "Order constructor with parameters : ";
std::cout << Name << ", " << Phone << ", " << Town << std::endl;
}
};
Order.cpp:
#include "Order.h"
#include <string>
std::string Order::info() const
{
return "Order " + name + ", " + phone + ", " + town;
}
void Order::init(std::string Name, std::string Phone, std::string Town)
{
name = Name;
phone = Phone;
town = Town;
}
Item.h:
#pragma once
#include <string>
class Item
{
std::string name;
int price;
public:
std::string info() const
{
return "Item " + name + ", " + std::to_string(price);
}
void init(std::string Name, int Price)
{
name = Name; price = Price;
}
};
ConsoleApplication7.cpp:
#include <iostream>
#include <E:\C++ project\ConsoleApplication7\Order.h>
int main()
{
Item s3, s4;
s3.init("keyboard", 200);
s4.init("laptop", 20000);
Order s1, s2;
s1.init("Andrew", "+380441231212", "Lviv");
s2.init("Oleg", "+380661235212", "Kyiv");
std::cout << s1.info() << std::endl << s3.info() << std::endl << s2.info() << std::endl << s4.info();
}
Я пытался написать конструктор в order.h, но что-то явно не так
Ответы (1 шт):
Полагаю конструктор должен сохранять переданные ему значения. В случае Order
это можно сделать так:
Order(std::string Name, std::string Phone, std::string Town) :
name(Name), phone(Phone), town(Town)
{
std::cout << "Order constructor with parameters : ";
std::cout << name << ", " << phone << ", " << town << std::endl;
}
Деструктор должен освобождать ресурсы объекта, но в данном примере освобождать нечего, так что остается только вывод:
~Order()
{
std::cout << "Order destructor : ";
std::cout << name << ", " << phone << ", " << town << std::endl;
}
Конструктор копирования должен копировать объекты, вариант по умолчанию подойдет, но раз нужно выводить строку то примерно так:
Order(const Order& That) :
name(That.name), phone(That.phone), town(That.town)
{
std::cout << "Order copy constructor : ";
std::cout << name << ", " << phone << ", " << town << std::endl;
}
То же самое делайте с Item
, ну и пишите код в main
так, чтобы при запуске отработали все функции в которых выводятся строки.