简体   繁体   English

是否可以在构造函数的初始化列表中初始化新对象并对其进行引用?

[英]Is it possible to initialize new object in constructor's initialization list and reference it?

Client is the top class of DLL so I need to create and pass new Session object in it's initialization to create requestor and session should be assigned to same Session. 客户端是DLL的顶级类,因此我需要在初始化时创建并传递新的Session对象以创建请求者,并将会话分配给同一Session。 Is it possible? 可能吗?

class Session
{
public:Session() {}

};

class Requestor
{
public: Requestor(const Session& session) {};
};

class Client
{
public:Client()
{
    Session newSession;
    requestor = Requestor(newSession);
}

private:
    Session session;
    Requestor requestor;
};

It is possible, but somewhat fragile in that the initialization order depends on the declaration order of the members. 可能,但有些脆弱,因为初始化顺序取决于成员的声明顺序。 Provided these remain as in your example, you can simply do 如果这些仍然与您的示例相同,则您只需

class Client()
{
public:
    Client() : requestor(session) // session is implicitly default constructed
    {}
private:
    Session session;
    Requestor requestor;
};

Note: it isn't clear why you are instantiating a local Session object in your constructor. 注意:尚不清楚为什么要在构造函数中实例化本地Session对象。 I am assuming that is a mistake. 我认为那是一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在构造函数的初始化列表中初始化数组 - Initialize array in constructor's initialization list 初始化对象成员,并在初始化列表中引用 - Initialize object member with reference in initialization list 初始化初始化列表中的引用 - initialize reference in initialization list 什么都没有初始化构造函数初始化列表中的stringstream参考成员 - Initialize stringstream reference member in constructor initialization list with nothing 复制构造函数初始化初始化列表中的引用成员会导致指针悬空 - Copy constructor initialize a reference member in initialization list causes dangling pointer C ++在构造函数的初始化列表中初始化嵌套结构? - C++ Initialize nested struct in constructor's initialization list? 为什么我们不能在构造函数括号({})中初始化Const和引用varibales,并且总是通过初始化列表完成 - Why cant we initialize Const and reference varibales inside the constructor braces({ }) and is always done via initialization list 如何在构造函数的初始化列表中初始化共享指针? - How to initialize a shared pointer in the initialization list of a constructor? 为什么在构造函数的初始化列表中使用new运算符进行memleak? - Why memleak with new operator in constructor's initialization list? 在构造函数的初始化列表中初始化时何时构造成员对象? - When is a member object constructed when initialized in the constructor's initialization list?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM