3. 有以下类的定义,请写出后面main 函数的输出结果: class A { private: char value; public: A(char v = '0') :value(v) { cout << "A()" << endl; } A(const A& rhs) :value(rhs.value) { cout << "A(A)" << endl; } ~A() { cout << "~A()" << endl; } void set(char v) { value = v; }
时间: 2023-11-28 13:49:50 浏览: 36
以下是 main 函数的代码:
```
int main() {
A obj1('1');
A obj2 = obj1;
obj2.set('2');
return 0;
}
```
输出结果为:
```
A()
A(A)
~A()
```
解释如下:
1. 首先创建一个名为 obj1 的 A 类对象,并将字符 '1' 传递给构造函数进行初始化,因此会输出 `A()`。
2. 接着使用 obj1 初始化一个名为 obj2 的 A 类对象,这里使用了复制构造函数,因此会输出 `A(A)`。
3. 当 main 函数结束时,程序会自动销毁 obj2,因此会输出 `~A()`。由于 obj1 是通过直接调用构造函数进行初始化的,因此不需要调用析构函数来释放内存。
相关问题
定义一个描述学生基本情况的类,数据成员包括:年龄、姓名、性别;成员函数包括:输入和输出各个数据成员的值。 分别给出如下的3个文件: ①含类定义的头文件student.h, //student.h (这是头文件,在此文件中进行类的声明) class Student //类声明 { public: void display( ); //公用成员函数原型声明 private: int num; char name[20]; char sex; }; ②包含成员函数定义的源文件student.cpp //student.cpp //在此文件中进行函数的定义 #include <iostream> using namespace std; #include "student.h" //不要漏写此行,否则编译通不过 void Student::display( ) //在类外定义display类函数 { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; } ③包含主函数的源文件main.cpp。 为了组成一个完整的源程序,应当有包括主函数的源文件: //main.cpp 主函数模块 #include <iostream> using namespace std; #include "student.h" //将类声明头文件包含进来 int main( ) {Student stud; //定义对象 stud.display(); //执行stud对象的display函数 return 0; } 请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。上机调试并运行。
好的,我知道了。以下是完整的程序:
student.h:
```
class Student {
public:
void display();
void set_value(int n, const char* na, char s);
private:
int num;
char name[20];
char sex;
};
```
student.cpp:
```
#include <iostream>
#include <cstring>
#include "student.h"
using namespace std;
void Student::display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
}
void Student::set_value(int n, const char* na, char s) {
num = n;
strcpy(name, na);
sex = s;
}
```
main.cpp:
```
#include <iostream>
#include "student.h"
using namespace std;
int main() {
Student stud;
stud.set_value(123, "Tom", 'M');
stud.display();
return 0;
}
```
运行结果:
```
num: 123
name: Tom
sex: M
```
这个程序定义了一个学生类,包括年龄、姓名和性别三个数据成员,以及输入和输出数据成员的值的成员函数。在类中增加了一个对数据成员赋初值的成员函数set_value,用于对学生对象的数据成员进行赋值。在主函数中,首先定义了一个学生对象stud,然后调用set_value函数对其数据成员进行赋值,最后调用display函数输出学生对象的数据成员。
定义一个描述学生基本情况的类,数据成员包括:年龄、姓名、性别;成员函数包括:输入和输出各个数据成员的值。 分别给出如下的3个文件: ①含类定义的头文件student.h, //student.h (这是头文件,在此文件中进行类的声明) class Student //类声明 { public: void display( ); //公用成员函数原型声明 private: int num; char name[20]; char sex; }; ②包含成员函数定义的源文件student.cpp //student.cpp //在此文件中进行函数的定义 #include <iostream> using namespace std; #include "student.h" //不要漏写此行,否则编译通不过 void Student::display( ) //在类外定义display类函数 { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; } ③包含主函数的源文件main.cpp。 为了组成一个完整的源程序,应当有包括主函数的源文件: //main.cpp 主函数模块 #include <iostream> using namespace std; #include "student.h" //将类声明头文件包含进来 int main( ) {Student stud; //定义对象 stud.display(); //执行stud对象的display函数 return 0; } 请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。上机调试并运行。
student.h文件:
```
class Student {
public:
void display(); // 公用成员函数原型声明
void set_value(int n, char *na, char s);
private:
int num;
char name[20];
char sex;
};
```
student.cpp文件:
```
#include <iostream>
#include <cstring>
#include "student.h"
using namespace std;
void Student::display() {
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl;
}
void Student::set_value(int n, char *na, char s) {
num = n;
strcpy(name, na);
sex = s;
}
```
main.cpp文件:
```
#include <iostream>
#include "student.h"
using namespace std;
int main() {
Student stud;
stud.set_value(1001, "Tom", 'M');
stud.display();
return 0;
}
```