gpt4 book ai didi

c++ - 从 C++11 之前的代码调用 C++11 库时 move 语义

转载 作者:行者123 更新时间:2023-11-30 01:12:53 25 4
gpt4 key购买 nike

假设您创建了一个包含类 MyClass 的库,该类具有适当的 move 赋值运算符和 move 构造函数。此外,该库已正确定义和实现 MyClass MyClass::operator + (const MyClass& other)。此类使用 -std=c++11 进行编译,以便使这些运算符和语法(如 MyClass&&)有意义。

如果您稍后有一个程序使用-std=c++11编译,使用这个库并创建类MyClass的实例, 你能利用 move 语义吗?

那,下面是不是会调用MyClass的 move 构造函数?

MyClass first, second;
// initialize first and second
MyClass moved = first + second; // hopefully uses move semantics

我知道这段代码无法创建自己的类并使用类似 MyClass&& 的语法而不会出现编译错误,但希望它仍然能够通过使用 C 来利用 C++11++11 图书馆...

感谢任何澄清。

最佳答案

C++03 和 C++11 的 ABI 没有区别,所以目标文件不是问题。您的库可以在内部尽可能多地使用 C++11,但是具有 C++11 语法的 header 不能用于 C++03 项目,编译器会抛出错误。

关于c++ - 从 C++11 之前的代码调用 C++11 库时 move 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247700/

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