gpt4 book ai didi

'using' 的 C++ 语法理解问题

转载 作者:行者123 更新时间:2023-12-04 04:27:34 24 4
gpt4 key购买 nike

我阅读了一些用 C++ 创建的项目的技术文档。我发现了一行代码,其中包含我不明白的语法:

using c = char (& (cClass::* [1]) (cClass(*)[2]) &)[3];
我看到了 using关键字在这里。这意味着我们要处理别名,但是这一行有什么作用呢?我怎么能理解呢?我认为这会创建一个命名别名 c并将右边表达式的结果赋值给它。但是这个表达是什么?

最佳答案

以下是如何阅读您的类型,一步一步。
为了清楚起见,下面我们声明一个变量 x .

T x[1]
xT 类型的数组(长度为 1)
cClass::* x[1]
xcClass 内部指向成员的指针数组(长度为 1) .
V (cClass::* x[1]) (U)
xcClass 内部指向成员函数的指针数组(长度为 1) .所述成员函数采用 U作为参数并返回 V .
V (cClass::* x[1]) (U) &
xcClass 内部指向成员函数的指针数组(长度为 1) .所述成员函数采用 U作为参数并返回 V , 并且只能在左值上调用。
V & (cClass::* x[1]) (U) &
xcClass 内部指向成员函数的指针数组(长度为 1) .所述成员函数采用 U作为参数并返回引用- V , 并且只能在左值上调用。
V (& (cClass::* x[1]) (U) &)[3]
xcClass 内部指向成员函数的指针数组(长度为 1) .所述成员函数采用 U作为参数并返回对 V 的数组(长度为 3)的引用, 并且只能在左值上调用。
最后,得到你的实际类型
char (& (cClass::* x[1]) (cClass(*)[2]) &)[3]
我们选择 V = char , 和 U = (cClass(*)[2]) ,后者是指向 cClass 的数组(长度为 2)的指针.
更具可读性的替代方案:
using char3 = char [3];
using ptrTo2cClass = cClass(*)[2];
using ptrToMethod = char3 & (cClass::*) (ptrTo2cClass) &;
using c = ptrToMethod[1];

关于 'using' 的 C++ 语法理解问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66617894/

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