为什么我不能在其他成员函数中使用构造函数中的变量"i"?C++

Why cant I use the variable "i" from my constructor in other member functions? C++

本文关键字:C++ 构造函数 变量 不能 其他 函数 成员 为什么      更新时间:2023-10-16

我正在努力为我的编程方法创建一个 Bank 程序,由于某种原因,我似乎无法使用我在任何其他成员函数的构造函数中分配给变量i的值。例如,如果用户输入6并且构造函数计算i为 0.005,则该值 (0.005) 不会传递给 MakePayment 函数。相反,i将重置为零。

谁能对此有所了解?我的代码如下。

  Loan_Data::Loan_Data(double p, double n, double i)
{
    cout << "Enter the loan amount: $";
    cin >> p;
    cout << "Enter the loan length: ";
    cin >> n;
    cout << "Enter your credit score: ";
    cin >> i;
        i = i / 100;
    i = i / 12;
    n = n * 12;
    Bal = p;
        A = (p * ((i * pow(1 + i, n)) / (pow(1 + i, n) - 1)));
        cout << "A is: " << A << endl;
        cout << "Bal is: " << Bal << endl;
        cout << "i is: " << i << endl;
}
void Loan_Data::MakePayment(double pay)
{
        cout << "i is: " << i << endl;
        cout << "Bal is: " << Bal << endl;
    cout << "Enter payment amount: $";
    cin >> pay;
        cout << "Bal is: " << Bal << endl;
    Bal = ((i + 1) * Bal) - pay;
        cout << "i is: " << i << endl;
        cout << "Bal is: " << Bal << endl;
        cout << "Pay is: " << pay << endl;
        cout << "A is: " << A << endl;
        A = pay;
        cout << "A is: " << A << endl;
}

i = i / 100; i设置参数,而不是成员变量i(假设存在此类变量)。参数隐藏成员。

您可以通过使用this->i(即 this->i = i / 100 ),或更改参数名称,使其不会与成员变量的名称冲突。

但也许你应该去掉这个参数,因为你实际上并没有使用它(cin >> i;核弹它的任何价值,使得首先传递它完全没有意义)。

你没有发布所有代码,但我假设你的类中有一个i属性。

问题是您将i作为构造函数中的参数,因此类中的i是隐藏的。由于您实际上并没有使用 ipn 的值,因此您可以简单地将它们从构造函数的参数中删除,如下所示:

Loan_Data::Loan_Data(){
   double p, double n;
我想

看看你的整个类定义。但是,我可以看到的是此功能的问题:->

Loan_Data::Loan_Data(双P,双N,双I);

正如您所说,"i"变量(类的成员变量)没有更新。这是因为函数中的变量名称串,其中局部变量始终是首选。所以你的局部变量被修改了(其范围仅限于这个函数)。

我认为你应该摆脱这个变量或使用这个->i(完整规范)来避免混淆,就像玉米秸秆说的那样。