利用c++程序编写在类内声明与定义构造函数,给数据成员(年龄age、学号num 性别sex、姓名name)赋默认值(例如:18,202311,m, zhangsan) - . 2.定义一个对象stu1与对象指针p1,通过指针p1调用display()函数,查看构造函数给的默认值是否正确; 3. 在类内再声明一个构造函数,在类外定义,实现函数重载(此处不赋默认值)
时间: 2024-02-24 20:58:20 浏览: 104
好的,我来回答你的问题。
1. 在类内声明与定义构造函数,给数据成员赋默认值的代码如下:
```cpp
class Student {
public:
Student() : age(18), num("202311"), sex('m'), name("zhangsan") {}
Student(int a, string n, char s, string nu) : age(a), name(n), sex(s), num(nu) {}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Sex: " << sex << endl;
cout << "Number: " << num << endl;
}
private:
int age;
string num;
char sex;
string name;
};
```
2. 定义对象stu1和对象指针p1,并通过指针p1调用display()函数的代码如下:
```cpp
int main() {
Student stu1;
stu1.display();
Student* p1 = &stu1;
p1->display();
return 0;
}
```
这段代码会输出以下内容:
```
Name: zhangsan
Age: 18
Sex: m
Number: 202311
Name: zhangsan
Age: 18
Sex: m
Number: 202311
```
我们可以看到,对象stu1和对象指针p1调用display()函数输出的结果相同,说明对象指针p1调用函数的方式是正确的。
3. 在类内再声明一个构造函数,在类外定义,实现函数重载(此处不赋默认值)的代码如下:
```cpp
class Student {
public:
Student() : age(18), num("202311"), sex('m'), name("zhangsan") {}
Student(int a, string n, char s, string nu) : age(a), name(n), sex(s), num(nu) {}
Student(string n, string nu, char s, int a) : age(a), num(nu), sex(s), name(n) {}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Sex: " << sex << endl;
cout << "Number: " << num << endl;
}
private:
int age;
string num;
char sex;
string name;
};
```
这段代码中,我们新增了一个构造函数,它的参数列表与之前的构造函数不同,实现了函数重载。在类外定义这个构造函数的代码如下:
```cpp
Student::Student(string n, string nu, char s, int a) : age(a), num(nu), sex(s), name(n) {}
```
这段代码实现了构造函数的定义,并赋予了它传入参数的值。
阅读全文