小编Jak*_*ski的帖子

引用未初始化的对象

在解释我想要标记的问题之前,我知道给出的例子是错误的代码.我已经在std::shared_ptr考虑以更合理的方式实现我的目标.这篇文章的原因只是我的好奇心和学习新东西的愿望.提前感谢您的帮助!

我今天有点搞乱我的解析器代码.优化化的东西等我专注于几个对象的实例,这些实例在解析过程中一直克隆得不必要.我没有那么慎重的想法来创建几个全局实例并通过静态方法访问它们.无论如何(强烈简化)我结束了这个有点有趣的案例:

class class_a
{
    class_a();
    class_a& referenceToObject;
};

class_a& getGlobalObject();

class_a::class_a()
:referenceToObject(getGlobalObject())
{}

class_a object;
class_a object2;

class_a& getGlobalObject()
{
    return object2;
}
Run Code Online (Sandbox Code Playgroud)

这显然意味着我做了很多非常错误的事情,但在这个分支中,优化是最重要的事情.

我感兴趣的是在更广泛的编译器集合中会出现这样的代码.GetGlobalObject()正在返回对没有调用构造函数的对象的引用.它仍然只返回引用 - 这是指向编译时已知的内存空间(数据段或堆上某处,dunno)的指针.

假设没有任何方法可以调用任何方法或任何object2引用成员,这个示例是未定义的行为吗?

c++ initialization reference language-lawyer

10
推荐指数
1
解决办法
662
查看次数

标签 统计

c++ ×1

initialization ×1

language-lawyer ×1

reference ×1