gpt4 book ai didi

c++ - 运算符重载优先级

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:07 26 4
gpt4 key购买 nike

我正在尝试为简单的 SQL 命令制作一个 C++ 编译模型。例如,这可能是我必须能够处理的主要功能的一部分:

CREATE_TABLE(books) [             // create("books");ovr[
COLUMN(c1) TYPE(string), // "title string",
COLUMN(c2) TYPE(string), // "author string",
COLUMN(num1) TYPE(int) // "price int"
];

因此,为了做到这一点,我不得不重载“[]”和“,”运算符。这样做之后,我发现“,”重载器在“[]”重载器之前执行。而我的猜测是应该首先执行“[]”。发生这种情况有什么特别的原因吗?还是仅仅因为找到“]”时才执行“[]”?

最佳答案

您的表达式将被编译成类似下面的内容,这可能会解释求值顺序:

CREATE_TABLE(books).operator[](
COLUMN(c1) TYPE(string).operator,(
COLUMN(c2) TYPE(string).operator,(
COLUMN(num1) TYPE(int)
)
)
);

CREATE_TABLE(books).operator[](
operator,( COLUMN(c1) TYPE(string),
operator,( COLUMN(c2) TYPE(string), COLUMN(num1) TYPE(int))
)
);

取决于您的 operator,() 是如何定义的(可能还有 COLUMNTYPE 宏是如何定义的)。

关于c++ - 运算符重载优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750710/

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