如何使用一个参数来实现函数来交换对象的私有内容

大卫

我创建了一个存储私有表达式树的类。我必须向此类添加一个函数,该函数将其自己的类型作为参数并交换这些对象的树。如果我可以使用 2 个参数,我想我可以创建一个友元函数。我会很感激一些关于如何实现这样一个功能的想法。

来自莫斯科的弗拉德

这是一个演示程序,展示了如何定义成员函数 swap。

#include <iostream>
#include <utility>

class A
{
private:
    int x;
public:
    explicit A( int x = 0 ) : x( x ) {}

    void swap( A &a ) noexcept
    {
        int tmp = std::move( a.x );
        a.x = std::move( this->x );
        this->x = std::move( tmp );
    }

    void swap( A &&a ) noexcept
    {
        int tmp = std::move( a.x );
        a.x = std::move( this->x );
        this->x = std::move( tmp );
    }


    const int & getX() const { return x; }
};

int main() 
{
    A a1( 10 );
    A a2( 20 );

    std::cout << "a1.x = " << a1.getX() << '\n';
    std::cout << "a2.x = " << a2.getX() << '\n';

    a1.swap( a2 );

    std::cout << "a1.x = " << a1.getX() << '\n';
    std::cout << "a2.x = " << a2.getX() << '\n';

    a1.swap( A( 30 ) );

    std::cout << "a1.x = " << a1.getX() << '\n';

    return 0;
}

程序输出是

a1.x = 10
a2.x = 20
a1.x = 20
a2.x = 10
a1.x = 30

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型检测:使用可变参数来正确实现一个计算均值的函数

在 React 中实现一个函数来交换数组元素而不改变原始数组

如何使用两个参数创建一个函数来查找节点是否存在?

如何创建一个函数来从嵌套对象中检索所有孩子的 id

如何编写一个TypeScript函数来接受将接口实现为参数的类?

如何使用一个喜欢的函数来获取具有逗号的数据

我想通过使用带有交换方法的另一个类而不是通常可用的通用交换函数来交换两个数字

如何创建一个函数来创建 N(numbers) 个具有 N 个属性的对象?

如何在Python中使用函数对象和值作为参数来实现双阶乘

如何创建一个函数来接受参数并在调用时增加参数?

如何根据提供给第一个函数的参数来推断参数?

创建一个纯函数来合并对象

如何创建一个函数来查找给定两个参数的可整除位数

如何使用函数的参数来使用对象的数据?

如何使用reduce、map或filter创建一个函数来显示和计算数组对象的每个值?

我如何编写一个以数组为参数来打印数组中值的计数的函数?

如何编写一个scala函数来接受两种类型的参数?

iOS 如何制作一个函数来接受向 NSCoding 确认的参数

是否有一个jQuery函数来列出属性?

Javascript Generator:如何获取一个对象作为参数来生成另一个对象?

如何编写函数来返回 plot 和一个对象(data.frame)?

如何获得一个python函数来返回对象而不是字符串

如何创建一个JavaScript函数来查找彼此嵌套的对象和数组

我如何创建一个函数来检查对象JavaScript数组中的布尔字段

有没有办法声明一个函数参数来接受一个匿名枚举?

我需要一个辅助函数来使用 ngFor 遍历复杂的对象数组

如何创建一个函数来计算年份?

如何定义一个函数来创建列表

如何声明一个函数来调用cogroup