在这段代码中,我无法理解vecor是如何初始化的?
class Student : public Person{
private:
vector<int> testScores;
public:
Student(string firstname,string lastname,int id,vector<int> scores):Person(firstname,lastname,id)
{
this->testScores=scores;
}
char calculate()
{
int sum=0;
char result;
for(int i=0;i<testScores.size();i++)
{
sum+=testScores[i];
}
int res=sum/testScores.size();
if(res<=100 && res>=90)
{
result='O';
}
else if(res<90 && res>=80)
{
result='E';
}
答案 0 :(得分:0)
在Student
的构造函数中,使用传递给{{1的std::vector<int> testScores
参数的内容,通过赋值运算符(在本例中为copy-assignment)初始化scores
构造函数。
顺便说一句,最好将Student
(以及scores
args)通过const引用传递给std::string
的构造函数,以避免不必要的复制:
Student
答案 1 :(得分:0)
如何初始化vecor?
默认情况下默认初始化(即由默认构造函数初始化)。要完成,首先默认初始化,然后在构造函数体中分配复制。
使用member initializer list的效率更高。
class Student : public Person {
private:
vector<int> testScores;
public:
Student(string firstname, string lastname, int id, const vector<int>& scores)
:Person(firstname, lastname, id), testScores(scores)
{
}
...
};
现在复制它的副本(即由复制构造函数初始化)。