当前位置:  开发笔记 > 编程语言 > 正文

检查传递给方法的对象是否为"this"

如何解决《检查传递给方法的对象是否为"this"》经验,为你挑选了1个好方法。

我正在尝试解决以下问题:

假设我正在编写一个类,它有一个myMethod修改两者的方法*this和传递的参数:

class MyClass {
    //some code here
    void myMethod(MyClass& other) {
        //modify *this and other
    }
}; 

问题是,当调用以下部分时,我希望该方法不执行任何操作:

MyClass x;
x.myMethod(x);

检查相等是不够的,因为我希望能够为两个相同的对象调用它.

例如,以一种更为实际的方式,假设它MyClass是类似的std::set并且myMethod合并两个集合,清空other.可以合并两个相同的集合,但我显然不能清空并同时填充一个集合.

我该如何检查?任何建议将被认真考虑.



1> TartanLlama..:

你可以只是比较的地址otherthis:

class MyClass {
    //some code here
    void myMethod(MyClass& other) {
        if (this != &other) {
            //modify *this and other
        }
    }
}; 

由于您通过引用传递,如果将相同的对象传递给您调用它的函数,则指针将是相等的.


@SergeyA我想你在谈论复制和交换习语,但这并不是一回事(尽管我并没有贬低你).
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有