【程序阅读题】 定义一个学生类CStudent:包含共有的属性id,name, 和公用的方法setname($name2),getname():分别设置属性name的值、获取属性name的值。 填空补充: class CStudent { public $id=1; public $name="who"; public function setname($name2) { _____________ = $name2; //填空补充 } public function getname() { return $this->name; } }
时间: 2024-03-19 18:42:02 浏览: 17
class CStudent
{
public $id=1;
public $name="who";
public function setname($name2)
{
$this->name = $name2; //填空补充
}
public function getname()
{
return $this->name;
}
}
相关问题
构造一个学生类 CStudent ,要求如下: 具有两个保护类型的成员:姓名和学号. 实现带参数的构造函数
好的,这是一个简单的 C++ 学生类 CStudent 的实现,满足你的要求:
```c++
class CStudent {
protected:
string m_name;
string m_id;
public:
CStudent(string name, string id) : m_name(name), m_id(id) {}
};
```
这个类有两个保护类型的成员变量 `m_name` 和 `m_id`,分别表示学生的姓名和学号。构造函数 `CStudent(string name, string id)` 是一个带参数的构造函数,用于初始化这两个成员变量。由于这个类仅仅是一个示例,所以没有实现其他的方法。
#include <iostream.h> #include <string.h> class CStudent { public: CStudent(char *n, int a); ~CStudent(); static void SetAge(int age); private: char *name; int age; static int nTotalObj; }; int CStudent::nTotalObj = 0; CStudent::CStudent(char *n, int a) :age(a) { int nLen = strlen(n); name = new char[nLen+1]; strcpy(name,n); name[nLen] = '\0'; nTotalObj++; } CStudent::~CStudent() { delete[] name; nTotalObj--; } void CStudent::SetAge(int age) { this->age = age; } void main() { CStudent stu1("张三",25); CStudent str2("李四",26); cout<<"CStudent::nTotalObj="<<CStudent::nTotalObj<<endl; }问题三:如果不改变主函数和类 CStudent 中的成员变量的属性,应该如何改正该程序?
这个程序存在一个问题,就是在类 CStudent 中定义的 name 和 age 成员变量没有进行释放,会导致内存泄漏。解决方法是在类的析构函数中释放这些成员变量。
修改后的代码如下:
```
#include <iostream.h>
#include <string.h>
class CStudent {
public:
CStudent(char *n, int a);
~CStudent();
static void SetAge(int age);
private:
char *name;
int age;
static int nTotalObj;
};
int CStudent::nTotalObj = 0;
CStudent::CStudent(char *n, int a) : age(a) {
int nLen = strlen(n);
name = new char[nLen + 1];
strcpy(name, n);
name[nLen] = '\0';
nTotalObj++;
}
CStudent::~CStudent() {
delete[] name;
nTotalObj--;
}
void CStudent::SetAge(int age) {
this->age = age;
}
void main() {
CStudent stu1("张三", 25);
CStudent str2("李四", 26);
cout << "CStudent::nTotalObj=" << CStudent::nTotalObj << endl;
}
```
这样就能保证在对象被销毁时,其成员变量占用的内存也会被释放,避免了内存泄漏的问题。