我想知道//4那句话为什么这么调用



Addition.h文件
#pragma once

#include 
#include 
using namespace std;

class Addition {
public:
    string brand;

    void setOperands(int, int);
    int getResult();
    Addition() {}
    ~Addition() {}
private:
    int op1;
    int op2;
};

void Addition::setOperands (int op1, int op2) {
    this->op1 = op1;
    this->op2 = op2;
}

int Addition::getResult() {
    return op1 + op2;
}
Person.h文件
#pragma once
// 3、请在此处添加所需头文件
#include"Addition.h"


class Person {
private:
    string name;

public:
    /* 1、结合类图,请在下方根据main函数中对象实例化方法编写一个新的构造函数,并将传入的参数赋值给name属性 */
Person(string name){
        this->name=name;
    }

    /* 2、结合类图,请在下方编写函数,模拟出“人使用加法器”的行为,通过对象参数调用Addition类中的setOperands()和getResult()函数 */
    void use(Addition *add, int op1, int op2) {
        cout << name << ":" << op1 << "+" << op2 << "="; // 输出提示
                     add->setOperands(op1,op2);
                              // 设置操作数
                                      cout<getResult(); 
            // 输出计算结果(不换行)
    }

    Person() {}
    ~Person() {}
};
main.cpp文件
#include "Person.h"

int main() {
    // 对象实例化时将Rose赋值给Person类中的name属性
    Person *person = new Person("Rose");
    // 创建一个计算器对象
    Addition *add = new Addition();
    // 4、模拟“Rose使用计算器计算500+12”行为
    person->use(add,500,12);

    return 0;
}

person是指针对象,所以用->
use函数的原型是
void use(Addition *add, int op1, int op2)
所以这么调用

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对于这个问题,参考资料中并没有直接回答,需要根据问题的背景和代码中的//4注释来进行分析。

    根据代码中的注释,//4是对快速排序算法的一种优化操作,用于减少不必要的交换操作,从而提高算法的效率。

    具体来说,这个操作是将当前元素放到应该存放的位置,而不是将当前元素与目标位置之间的所有元素逐一交换,这样就能减少很多交换操作,提高算法的效率。

    在实现快速排序算法时,将元素按照一定的规则进行分区,并找到一个位置p,将待排序的数组分成arr[l...p-1]和arr[p+1...r]两部分,其中arr[l...p-1]都小于arr[p],arr[p+1...r]都大于arr[p]。对这两部分都再次进行递归排序,直到整个数组有序。

    具体而言,在快速排序算法的partition操作中,//4操作是在找到一个比基准元素小的元素时,将其与合适的位置进行交换,以确保当前元素所在的区间没有无用的操作。

    以上就是对问题的回答,如果需要更详细的解释可以参考参考资料中的代码实现部分。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^