用成员初始化列表初始化类对象的引用变量? 1.2.

如何解决用成员初始化列表初始化类对象的引用变量? 1.2.

https://stackoverflow.com/a/8523361/11862989 从这个答案开始,这个问题就出现了。我觉得很小 那个答案有问题,所以我在那里评论了,但他没有回复(我指的是回答的家伙(190K 声誉))所以我在这里问那一小部分。

1.

.h

struct A
{
    private:
        int &i;
    public:
        A(int);
};

.cpp

A::A(int k1): i(k1)   
{
    std::cout<<&k1<<" "<<k1<<"\n";
    std::cout<<&i<<" "<<i<<"\n";
}

ma​​in.cpp

int main()
{
    int x=99;
    std::cout<<&x<<" "<<x<<"\n";
    A a1(x);
}

输出

0x72fe0c 99
0x72fde8 99
0x72fde8 99

2.

.h

struct A
{
    private:
        int &i;  // __change__
    public:
        A(int&);
};

.cpp

A::A(int &k1): i(k1)    // __change__
{
    std::cout<<&k1<<" "<<k1<<"\n";
    std::cout<<&i<<" "<<i<<"\n";
}

ma​​in.cpp

int main()
{
    int x=99;
    std::cout<<&x<<" "<<x<<"\n";
    A a1(x);
}

输出

0x72fe0c 99
0x72fe0c 99
0x72fe0c 99

2nd 代码中,因为我们通过 main 传递 x 的引用,它由 k1 收集。现在我们将 k1 的引用传递给 i。表示现在 i 指的是 k1,而 k1 指的是 x。表示间接 i 指的是 x 我对吗?

1st 我认为这里变量 x 的值通过 main 传递,并由变量 k1 收集,然后将 k1 的引用传递给变量 i。所以在这种情况下变量 i 指的是变量 k1 但变量 k 不是指变量 x 我是对的吗?

我在上面提到的那个人(190K 声誉)他使用了第一种方法来做到这一点,我认为他是错误的,__2nd__method 用于初始化类中对象的引用变量是正确的。我说得对吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?