工具/软件:TI C/C++编译器
我有一个类、其中包含一个私有成员、它是对整数的引用。 当我尝试在类构造函数中初始化此引用时,我发现成员的地址为0x000000。 有人以前见过这种东西吗? 编译器会安静地允许此操作、并且(TI v17.9.0.STS)不会发出警告或错误。 下面是一个屏幕截图、其中描述了一个生成此问题的简单示例。 注意:向输入变量或类成员添加或删除 const 限定符不会更改结果。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
我有一个类、其中包含一个私有成员、它是对整数的引用。 当我尝试在类构造函数中初始化此引用时,我发现成员的地址为0x000000。 有人以前见过这种东西吗? 编译器会安静地允许此操作、并且(TI v17.9.0.STS)不会发出警告或错误。 下面是一个屏幕截图、其中描述了一个生成此问题的简单示例。 注意:向输入变量或类成员添加或删除 const 限定符不会更改结果。
返回到您的第一个帖子中的代码... 这不是合法的 C++。 很抱歉、我没有提前注意到。
这是类引用 为了使事情更加清晰、我更改了一些名称。
第6行是引用的构造函数 它会创建对 arg 的引用。 当该构造函数完成执行时,arg 将超出范围。 现在、您可以引用不存在的内容。 这不是合法的 C++。
解决此问题的方法有多种。 由于我怀疑您显示的是实际代码的削减、因此我不确定讨论如何修复此精确代码是否合理。 关键点是:创建引用时、引用(引用的变量或对象)必须在引用处于范围内的任何位置都保留在范围内。
谢谢、此致、
乔治