Я учащийся в C++, и я вхожу в тему конструкторов и деструкторов. Я скомпилировал приведенный ниже код и возвращает неопределенную ссылку на Book :: ~ Book(). Но когда я комментирую деструктор, он работает нормально. Я думаю, что я могу создать функции-члены после использования деструкторов. Что я здесь делаю неправильно? Я написал свой код ниже для лучшего подчёркиванияПосле использования деструкторов код показывает «ссылка на Book :: ~ Book()» error
class Book
{
private:
int *pages;
int *price;
public:
Book() //default constructor
{
pages = new int;
price = new int;
*pages = 300;
*price = 8;
};
void pre_destructor()
{
std::cout << "The pages:" << *pages;
std::cout << "The price:" << *price;
}
~Book(); //destructor
void post_destructor()
{
std::cout << "The pages:" << *pages << "\n";
std::cout << "The price:" << *price << "\n";
delete pages;
delete price;
}
};
int main()
{
using namespace std;
Book book1;
cout << "Before using destructors" << endl;
cout << "---------------------------------"<< endl;
book1.pre_destructor();
cout << "After using destructors" << endl;
cout << "---------------------------------";
book1.post_destructor();
return 0;
} //destructor is called here
Добро пожаловать на ТАК! Вы забыли реализовать деструктор; '~ Book();' это просто его объявление. –
Я сделал редактирование. Но теперь он показывает «ожидаемый, в конце объявления участника», указывающий на строку, где деструктор называется –
. У некоторых функций очистки обычно плохой дизайн, если вам нужно их вручную называть, потому что вы можете забыть позвонить им или может возникнуть исключение. Подумайте о том, чтобы разместить их внутри своего деструктора. – user2296177