这是我的代码。我不明白为什么它不显示3,即使在类构造函数中,param1变为3。

#include <iostream>

using namespace std;

class A{

    int valoare;
public:

    A(int param1 = 3):valoare(param1){}
    int getValoare(){return this -> valoare;}
};

int main()
{

    A vector[] = {*(new A(3)), *(new A(4)), *(new A(5)), *(new A(6))};
    cout << vector[2].getValoare();
    return 0;
}

最佳答案

您可能需要阅读有关默认参数的信息:https://en.cppreference.com/w/cpp/language/default_arguments

当为带有defualt参数的函数指定参数时,它将覆盖该默认值。这样,您的代码将输出5。

附带说明一下,您的代码存在内存泄漏,因为您使用new关键字分配了内存,并且从未删除它。您应该更改Vector的声明,即按如下所示在堆栈上分配内存:

Vector = {A(3), A(4), A(5), A(6)}

09-25 22:07