Я ученик C++. Я составил следующую программу. Я работаю над концепцией конструкторов и деструкторов. У меня есть этот код ниже, где я объявляю частный деструктор и получаю доступ к закрытым членам, используя функцию-член класса из main(). Я знаю, что частный конструктор может быть объявлен, но также является публичным конструктором? вот мой код ниже:Объявление конструкторов как частных показывает ошибки. Обязателен ли хотя бы один публичный конструктор?
class Book
{
private:
int *pages;
int *price;
Book() //default constructor
{
pages = new int;
price = new int;
*pages = 300;
*price = 8;
}
public:
void pre_destructor()
{
std::cout << "The pages:" << *pages << "\n";
std::cout << "The price:" << *price << "\n";
}
~Book() //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 << "---------------------------------";
return 1;
}
Для вышеуказанной программы показаны две ошибки. Один из них находится в основной функции, где объявляется объект; Ошибка: ошибка в содержимом. Второй - в строке, где вызывается конструктор; Ошибка: Book :: Book() является закрытой.
Главное не имеет прямого доступа к конструктору в коде. Тогда почему это показывает ошибку доступа?
Объявление конструктора как частного не позволит создать объект, в других областях. Поскольку конструктор не может быть вызван оттуда. поэтому конструктор/деструктор становится общедоступным! –
Вам нужно получить [хорошую книгу] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –
'Главное не имеет прямого доступа к конструктору в коде.' Это тоже. Строка 'Book book1;' инициализирует объект, используя свой конструктор по умолчанию (который вы сделали закрытым и, следовательно, недоступным). –