Untitled
#include <iostream> #include <stdexcept> class DoiTuongGioiHan { private: static int so_luong_doi_tuong; static const int gioi_han_doi_tuong = 3; DoiTuongGioiHan() { so_luong_doi_tuong++; } public: ~DoiTuongGioiHan() { so_luong_doi_tuong--; } static DoiTuongGioiHan* taoDoiTuong() { if (so_luong_doi_tuong >= gioi_han_doi_tuong) { throw std::runtime_error("Không thể tạo nhiều hơn 3 đối tượng của lớp DoiTuongGioiHan"); } return new DoiTuongGioiHan(); } static int laySoLuongDoiTuong() { return so_luong_doi_tuong; } }; int DoiTuongGioiHan::so_luong_doi_tuong = 0; int main() { try { DoiTuongGioiHan* doi_tuong_1 = DoiTuongGioiHan::taoDoiTuong(); DoiTuongGioiHan* doi_tuong_2 = DoiTuongGioiHan::taoDoiTuong(); DoiTuongGioiHan* doi_tuong_3 = DoiTuongGioiHan::taoDoiTuong(); DoiTuongGioiHan* doi_tuong_4 = DoiTuongGioiHan::taoDoiTuong(); } catch (const std::exception& e) { std::cerr << e.what() << std::endl; } return 0; }
Leave a Comment