gpt4 book ai didi

c++ - 是否在定义明确的非构造 "object"上调用非虚拟成员函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:56 26 4
gpt4 key购买 nike

在构造函数中,允许调用非虚拟成员函数。

根据这个事实是否可以得出以下代码段是明确定义的?

struct A {
void foo { std::cout << "Hi there! My address is: " << this; }
};

A * a = nullptr;
a->foo ();

回答?

借助评论中给出的一些链接以及链接页面中给出的链接,我现在认为可以找到答案,例如在

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3035.pdf

§3.8 标准杆。 5,页。 66:

“在对象的生命周期开始之前,但在分配对象将占用的存储之后...... [t]程序具有未定义的行为如果 [...] 指针用于访问非静态数据成员或调用对象的非静态成员函数"

那么如果根本没有分配存储就调用一个成员函数应该更未定义。

我想这里解释了为什么将其设为未定义是个好主意的一个重要原因:https://stackoverflow.com/a/3257755/1419315

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com