当我不得不一次又一次地使用它时,有没有办法说这个对象只有一次?

时间:2018-05-30 16:10:51

标签: c++

以例如:

int main(void){
    numberComparator comparator1;

    comparator1.setA(78.321);
    comparator1.showA();
    comparator1.setB('c');
    comparator1.setB("Yes");
    comparator1.setB(124.213);
    comparator1.showB();
    comparator1.setB(12);

    return 0;
}

不是一遍又一遍地说comparator1,而是可以做些更短的事情吗?

我知道这并没有真正改变程序的工作方式,但它确实可以让我更容易地测试我制作的课程。

我正在进行重载,因此对于我的比较器中的各种输入,我的程序可以处理它们而不会使结果变得疯狂。在这种情况下,我希望输入为int,但如果输入不是什么?

答案可能在互联网上,但正如我的标题可能推断,我不知道如何陈述问题。

2 个答案:

答案 0 :(得分:6)

您正在寻找类似with关键字的内容,例如Pascal语言。

不幸的是,C ++没有提供类似的功能。使用这些参考文献,可以缩短班级的名称,并在某种程度上减轻痛苦,即

Comparator comparator1;
...
{
    Comparator& cr = comparator1;

    cr.a();
    cr.b();
    cr.c();
}

答案 1 :(得分:4)

这取决于。如果numberComparator具有“流畅”接口,则每个成员函数将返回对*this的引用,您可以写:

    comparator1
        .setA(78.321)
        .showA()
        .setB('c')
        .setB("Yes")
        .setB(124.213)
        .showB()
        .setB(12);

请注意,这是一个通过步入调试的婊子(你必须进入每个函数,直到你找到你感兴趣的那个)。

另一种选择当然是“使用较短的名字”。

int main(void){
    numberComparator c1;

    c1.setA(78.321);
    c1.showA();
    c1.setB('c');
    c1.setB("Yes");
    c1.setB(124.213);
    c1.showB();
    c1.setB(12);

    return 0;
}

如果将范围限制在几行中,那么拥有一个特别长的名称实在没有意义。对于局部变量,如果范围不限于几行,则函数可能太长。