这是我的代码。我不明白为什么它不显示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)}