【发布时间】:2021-11-02 17:29:47
【问题描述】:
目前,我正在尝试学习和使用这个程序中的析构函数。我创建了一个名为 Student 的类,它可以获取 3 个科目的卷号、姓名和分数,并将其存储在一个数组中。我无法删除为存储学生成绩而创建的数组...
我收到一条错误/警告消息...
在析构函数中'Student::~Student()': :65:14: 警告:删除数组 '((学生*)this)->学生::标记' 65 |删除[] 标记; | ^~~~~ munmap_chunk(): 无效指针 命令被信号 6 终止
#include<iostream>
using namespace std;
//This class gets rollNo, name, marks for 3 subjects....
class Student
{
private:
int rollNumber;
string name;
int marks[3];
public:
void setRollnumber(int roll)
{
rollNumber = roll;
}
void setName(string name)
{
this->name = name;
}
void setMarks(int marks1, int marks2, int marks3)
{
this -> marks[0] = marks1;
this -> marks[1] = marks2;
this -> marks[2] = marks3;
}
int totalMarks();
char grade(int totalMarks, int maxMarks);
~Student();
};
//Finds the total marks...
int Student :: totalMarks()
{
int total = 0;
for(int i=0; i<3; i++)
{
total += marks[i];
}
return total;
}
//Returns the grade...
char Student :: grade(int totalMarks, int maxMarks)
{
float percent = ((float)totalMarks / (float)maxMarks) * 100;
char grade;
grade = percent >= 90 ? 'A' : (percent >= 75) ? 'B' : (percent >= 50) ? 'C' : 'F';
return grade;
}
//Destructor....
Student :: ~Student()
{
delete &rollNumber;
delete &name;
delete[] marks;
}
int main(){
Student bee;
bee.setRollnumber(50);
bee.setName("Bee");
bee.setMarks(90, 80, 70);
int total_marks_scored = bee.totalMarks();
cout<<"Total Marks : "<<total_marks_scored<<endl;
cout<<"Grade Obtained : "<<bee.grade(total_marks_scored, 300);
return 0;
}
【问题讨论】:
-
你没有
new他们。你为什么delete他们?
标签: c++ class oop destructor