gpt4 book ai didi

c++ - 如何理解 "dynamic type: 〈prvalue〉 static type of the prvalue expression"”

转载 作者:行者123 更新时间:2023-11-27 22:42:42 32 4
gpt4 key购买 nike

[N4687]

3.9 [defns.dynamic.type]

dynamic type

〈glvalue〉 type of the most derived object (4.5) to which the glvalue refers [Example: If a pointer (11.3.1) p whose static type is “pointer to class B” is pointing to an object of class D, derived from B (Clause 13), the dynamic type of the expression *p is “D”. References (11.3.2) are treated similarly. — end example ]

3.10 [defns.dynamic.type.prvalue]

dynamic type

〈prvalue〉 static type of the prvalue expression

关于 3.9 上动态类型混凝土的大多数问题。但是还是看不懂3.10的意思。

这里是 cppreference的描述:

A prvalue cannot be polymorphic: the dynamic type of the object it identifies is always the type of the expression.

更新:

3.9 告诉我动态类型意味着类型的确定必须在运行时延迟。

我有几个关于 3.10 的问题:

  1. 3.9和3.10有什么关系

  2. 为什么强调纯右值?

  3. 是不是说纯右值的动态类型和静态类型总是一样的?

最佳答案

What the relationship between 3.9 and 3.10

它们都定义了“动态类型”。非正式地,表达式的动态类型是包含表达式表示的对象的完整对象的类型。

Why prvalue is emphasized?

也许为了清楚起见,他们决定分别解释“动态类型”对左值和右值的含义。哲学(在 C++17 之前)是 glvalue 是 refered 一个对象或函数,而 prvalue 是一个对象的,所以它们有点本质上不同。

Does it mean prvalue's dynamic and static type is always the same?

是的。虽然可以创建一个引用另一个对象的基类子对象的 glvalue,但 prvalue 不引用任何东西,因此它就是它。任何创建作为另一个对象的子对象的纯右值的尝试都只会创建该子对象的拷贝,而该拷贝是一个完整的对象。

关于c++ - 如何理解 "dynamic type: 〈prvalue〉 static type of the prvalue expression"”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47244441/

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