将print类的构造函数声明为private,用公有成员函数内含一个static类对象并返回引用,为什么就说只有一个类对象会被产生出来啊?
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
我可以帮您解答这个问题。
要实现只生成一个类对象的目的,可以使用单例模式。以下是使用单例模式实现只生成一个类对象的C++代码示例:
class Print { private: static Print* instance; // 私有的静态指针变量,用于指向唯一的类对象实例 Print() { } // 私有的构造函数 public: static Print& getInstance() { if (instance == nullptr) { instance = new Print(); } return *instance; } void printMessage(const std::string& message) { // 输出消息的代码 std::cout << message << std::endl; } }; Print* Print::instance = nullptr; // 静态指针变量初始化为nullptr int main() { Print& printObj1 = Print::getInstance(); Print& printObj2 = Print::getInstance(); printObj1.printMessage("Hello World!"); // 打印消息 "Hello World!" printObj2.printMessage("Welcome!"); // 打印消息 "Welcome!" return 0; }
在这个示例中,通过将构造函数声明为私有,确保外部无法直接创建类对象。通过静态成员函数
getInstance()
来访问唯一的类对象,该函数会在第一次调用时创建类对象,并返回引用。之后的调用都会返回同一个类对象。在main()
函数中,我们分别通过getInstance()
函数获取两个类对象的引用,并分别调用printMessage()
函数打印消息。代码示例中使用了静态的指针变量
instance
来保存唯一的类对象实例,初始值为nullptr
。在getInstance()
函数中,如果instance
为nullptr
,则创建一个新的类对象实例,并将指针变量instance
指向该实例。之后的调用中,如果instance
不为nullptr
,则直接返回该实例的引用。这样,通过单例模式,我们就可以确保在整个程序生命周期中只存在一个类对象实例。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 chemex:docker安装chemex过程中遇到问题
- ¥15 关于遇到一个python,django,redis,uwsgi,nginx搭的一个企业微信修改AD密码的平台的问题!
- ¥15 读取parquet文件某一列的数据但是输出是整个列名和格式
- ¥15 机动目标 制导律建模问题
- ¥100 求Java socks 转发实现Demo
- ¥20 随身WiFi移动网络访问不了
- ¥50 RAD_XE11.3获取android11手机的IMEI码
- ¥15 linux的gcc命令报错
- ¥20 如何再GIS用海岸线建立缓冲区
- ¥15 codeblock遇到问题了,求帮助😭