#include<iostream> using namespace std; class Student { int age; char name[10]; public: Student (int a =18, char *str = "noName") { strcpy(name,str); age= a>0 ? a: 0; } Student(Student& s):age(s.age) { strcpy(name,s.name); cout<<"copy construct "<<endl; }~ Student () { cout<<"destruct "<<name<<endl; } bool compare( Student s)const { return age>s.age; } const char* getName()const { return name; } }; A-5 int main() { Student p1, p2(22,"Linda"); if(p1.compare(p2)) cout<< p1.getName()<<" is older."<<endl; else cout<< p2.getName()<<" is older."<<endl; return 0;
时间: 2024-04-26 14:20:21 浏览: 54
使用include <iostream>时一定要加using namespace std
这是一段 C++ 代码,它定义了一个名为 Student 的类,包含了成员变量 age 和 name,以及一些成员函数,包括构造函数、拷贝构造函数、析构函数、compare 函数和 getName 函数。代码中还包含了一个名为 main 的函数,它使用了 Student 类创建了两个对象 p1 和 p2,并调用了它们的成员函数进行比较,输出结果。
具体解释如下:
- 第一行包含了输入输出流库的头文件 iostream。
- 第二行使用了命名空间 std,避免了使用 std:: 的麻烦。
- 在第四行开始定义了一个名为 Student 的类。
- 在第五行和第六行定义了类的私有成员变量 age 和 name。
- 在第七行开始定义公有成员函数,其中构造函数在第九行开始定义,它有两个参数,一个是 int 类型的年龄,一个是 char* 类型的字符串,用于初始化 age 和 name 成员变量。
- 在第十八行开始定义拷贝构造函数,它接受一个 Student 类型的参数 s,用于复制 s 对象的 age 和 name 成员变量的值到当前对象。
- 在第二十一行开始定义析构函数,它在对象被销毁时输出 name 成员变量的值。
- 在第二十三行开始定义 compare 函数,它接受一个 Student 类型的参数 s,用于比较当前对象的 age 成员变量和参数 s 的 age 成员变量的大小,返回一个布尔值。
- 在第二十六行开始定义 getName 函数,它返回一个指向 name 成员变量的常量指针。
- 在第二十九行开始定义 main 函数,它创建了两个 Student 类型的对象 p1 和 p2,其中 p1 使用默认构造函数初始化,p2 使用带参数的构造函数初始化。
- 在第三十行和第三十一行调用了 p1 和 p2 的 compare 函数进行比较,并输出结果。
注:在代码中,A-5 表示编程题号,可能是为了标记题目编号而添加的。
阅读全文