c++ - 正确初始化成员引用

标签 c++ constructor

class Temp {
    public : 
        Temp(X& x): x_(x) {}
        Temp(X& x, Y& y) : x_(x), y_(y) {}
        ...
    private:
        X& x_;
        Y& y_;
}

我收到错误是因为在 Temp(X& x): x_(x) 的情况下,引用 y_ 未初始化。正确编写此类的常见做法是什么?

最佳答案

我会建议另一种方法,即使这可能不是您想要的。

它不使用引用变量(取而代之的是内存指针),它也不使用 boost,但它允许您保留两个构造函数而无需花费更多的内存资源。

#include <iostream>

class Temp
{
    public :
        Temp(int& x): x_(&x), y_(NULL) {}
        Temp(int& x, int& y) : x_(&x), y_(&y) {}
        void print() { std::cout << "*x_: " << *x_ << std::endl; }

    private:
        int* x_;
        int* y_;
};

int main()
{
    int x = 5;
    Temp tmp(x);

    tmp.print();

    return 0;
}

关于c++ - 正确初始化成员引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430223/

相关文章:

c++ - ADO 记录集对象 : strange invalid pointer error

C++,派生类上带有istream的构造函数

c++ - C++中简单可变参数函数的无与伦比的模板?

c++ - 运算符重载为友元函数

C++ 链表奇怪的输出

haskell - 无法理解 Haskell 的类型系统

C++在复制构造函数中初始化列表赋值并在复制构造函数中崩溃

c++ - 单击“模块”选项卡时,是否可以让 Doxygen 直接显示唯一的模块?

c++ - 将 .hpp 文件类型添加到 Visual Studio

java - "..."在 Java 中被使用?