Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何理解;动态类型:〈;prvalue〉;prvalue表达式的静态类型"&引用;_C++ - Fatal编程技术网

C++ 如何理解;动态类型:〈;prvalue〉;prvalue表达式的静态类型"&引用;

C++ 如何理解;动态类型:〈;prvalue〉;prvalue表达式的静态类型"&引用;,c++,C++,[N4687] 3.9[定义动态类型] 动态类型 〈glvalue〉 glvalue引用的最派生对象(4.5)的类型 [示例:如果静态类型为“指向类B的指针”的指针(11.3.1)p指向类D的对象, 源自B(第13条),表达式*p的动态类型为“D”。参考文件(11.3.2)被视为 类似地。-结束示例] 3.10[定义动态类型prvalue] 动态类型 〈prvalue〉 prvalue表达式的静态类型 关于动力型混凝土的大多数问题见3.9。 但我还是不明白3.10的意思 以下是您的描述: prv

[N4687]

3.9[定义动态类型]

动态类型

〈glvalue〉 glvalue引用的最派生对象(4.5)的类型 [示例:如果静态类型为“指向类B的指针”的指针(11.3.1)p指向类D的对象, 源自B(第13条),表达式*p的动态类型为“D”。参考文件(11.3.2)被视为 类似地。-结束示例]

3.10[定义动态类型prvalue]

动态类型

〈prvalue〉 prvalue表达式的静态类型

关于动力型混凝土的大多数问题见3.9。 但我还是不明白3.10的意思

以下是您的描述:

prvalue不能是多态的:它标识的对象的动态类型始终是表达式的类型

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

关于3.10,我有几个问题:

  • 3.9和3.10之间的关系是什么

  • 为什么强调价值

  • 这是否意味着prvalue的动态和静态类型始终相同

  • 3.9和3.10之间的关系是什么

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

    为什么强调价值

    也许为了清楚起见,他们决定分别解释glvalues和prvalues的“动态类型”含义。其原理(在C++17之前)是,glvalue指的是对象或函数,而prvalue指的是对象的值,因此它们本质上有些不同

    这是否意味着prvalue的动态和静态类型始终相同

    对。虽然可以创建一个引用另一个对象的基类子对象的glvalue,但prvalue并不引用任何东西,因此它就是这样。任何创建另一个对象的子对象的prvalue的尝试都只会创建该子对象的副本,而该副本是一个完整的对象

    3.9和3.10之间的关系是什么

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

    为什么强调价值

    也许为了清楚起见,他们决定分别解释glvalues和prvalues的“动态类型”含义。其原理(在C++17之前)是,glvalue指的是对象或函数,而prvalue指的是对象的值,因此它们本质上有些不同

    这是否意味着prvalue的动态和静态类型始终相同

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

    3.9定义“glvalue的动态类型”,3.10定义“prvalue的动态类型”

    文档使用了稍微不寻常的格式。这两个部分应视为单独的定义,不得重叠。(所有表达式均为glvalues或prvalues,但不能同时为两者)。

    3.9定义“glvalue的动态类型”,3.10定义“prvalue的动态类型”


    文档使用了稍微不寻常的格式。这两个部分应视为单独的定义,不得重叠。(所有表达式都是glvalues或prvalues,但不是同时使用两者)。

    这其中的哪一部分您理解有困难?看看这是否有帮助:@Yakk感谢您的课,我更新了我的问题。这其中的哪一部分您理解有困难?看看这是否有帮助:@Yakk感谢您的课,我更新了我的问题。