如何在类函数中正确使用指针

How to properly use pointers with class functions

本文关键字:指针 类函数      更新时间:2023-10-16

当使用指针时,如何正确地实现这个类函数?我了解指针的基本概念,但还是有些混乱。我要创建一个分数相加的函数。

f3 =  f1->add(f2);

类中的其他所有内容都正常运行。

#include <iostream>
using namespace std;
//members of a class default to private
class Fraction
{
private:
    int numerator;
    int denominator;
public:
    Fraction();
    Fraction(int,int);
    ~Fraction();
    Fraction* add(Fraction &f);
    void setFraction(int, int);
    int getNumerator();
    int getDenominator();
    };
Fraction::Fraction()
{
    numerator = 0;
    denominator = 0;
}
Fraction::Fraction(int num, int den)
{
    this->numerator = num;
    this ->denominator = den;
}
Fraction::~Fraction()
{
}
void Fraction::setFraction(int num, int den)
{
    numerator = num;
    denominator = den;
}
int Fraction::getNumerator()
{
    return numerator;
}
int Fraction::getDenominator()
{
    return denominator;
}
Fraction* Fraction::add(Fraction &f)
{
    int num = f.numerator * this->denominator;
    num += this->numerator *f.denominator;
    int den = this->denominator * f.denominator;
    return new Fraction(num,den);
}
int main() {
    Fraction* f1 = new Fraction(5,8);
    Fraction* f2 = new Fraction(1,8);
    cout << f1->getNumerator() << "/" << f1->getDenominator() <<endl;
    Fraction* f3 = new Fraction();
    f3 =  f1->add(f2);
    return 0;
}

如果你想传递一个指针给一个函数(不管它是不是成员),让函数签名:

Fraction* Fraction::add(Fraction* f)
                                ^ pass a pointer in