c++ - 在这种情况下我应该使用引用成员吗?

标签 c++ class reference smart-pointers

我是一名计算机科学专业的学生,​​我正在自学 C++ 并尝试编写一个干净的 C++ 程序。

这是我的问题: 我正在编写一个 App 类,它将成为程序的主类,我希望我的很多类都可以访问将在主函数中创建的 App 对象。

基本上 main 函数看起来是这样的

int main(int argc, char *argv[])
{
   App myApp;

   return myApp.run();
}

App 类将有许多来自类的对象需要引用(或者在这种情况下是其他更好的东西?)到应用程序。 这是一个需要它的类的例子

class AppStateHandler{
private:
    /// < Reference to the App
    App& m_app;
public:
    AppStateHandler(); // How can I initialize m_app with that ??

    /// @param app The app the AppStateHandler will work with
    AppStateHandler(App &app);
};

这是我的问题,在这种情况下使用引用作为类成员是否不好?我应该使用某种智能指针吗? 在使用引用的情况下,我无法制作默认构造函数,因为必须在构造函数初始化列表中初始化m_app 所以,没有默认值是不是很糟糕构造函数?

如果您对如何改进我的代码有任何建议,我很感兴趣。

非常感谢!

编辑:我实际上想创建一个 AppStateHandler 作为 App 的成员。主函数中声明的唯一对象是 App。

最佳答案

在这种情况下使用引用意味着应用程序不能为 NULL。但是只有在保证对象的生命周期始终在父对象的生命周期内时才使用引用。如果不是,请使用智能指针。

关于c++ - 在这种情况下我应该使用引用成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28885100/

相关文章:

ruby-on-rails - mongoid中references_many和has_many的区别

c# - 从 csproj 文件中读取引用列表

c++ - CreateSharedMemory 用法

c++ - 无限递归 `enable_if`

c++ - 实时对象绘画

c++ - 传递 std::type_info 来识别 void *

javascript - 超出最大调用堆栈大小 - 无限循环

c++ - 多个文件包含到单个类冲突

java - 匿名类型的类型

Python:为 "through"分配一个迭代器