adding student program

This commit is contained in:
Jidong Xiao
2025-04-11 04:04:59 -04:00
committed by JamesFlare1212
parent 21fa2c03de
commit 7f7b936341
4 changed files with 157 additions and 1 deletions

View File

@@ -133,7 +133,7 @@ If no access specifier is provided:
private members of the base class are never accessible directly in the derived class, regardless of the inheritance type. private members of the base class are never accessible directly in the derived class, regardless of the inheritance type.
### 25.5 Constructors and Destructors ## 25.5 Constructors and Destructors
- Constructor Invocation: When a derived class object is created, the base class constructor is invoked first, followed by the derived class constructor. - Constructor Invocation: When a derived class object is created, the base class constructor is invoked first, followed by the derived class constructor.
@@ -156,3 +156,19 @@ public:
} }
}; };
``` ```
## 25.6 Example Programs:
We develop this student_test.cpp program.
### version 1
[student_test1.cpp](student_test1.cpp) In this version, there is only one class: class Human
### version 2
[student_test2.cpp](student_test2.cpp) In this version, there is the base class - Human, and the child class - Student, but the child class doesn't have its own member variables, and its only member function is the constructor.
### version 3
[student_test3.cpp](student_test3.cpp) In this version, the child class has its own member functions introduce() and sleep(); and because these functions need to access the parent class's member variables, so we changed the member variables from private to protected.

View File

@@ -0,0 +1,35 @@
#include <iostream>
#include <string>
class Human {
private:
std::string name;
int age;
int sleep_hours;
public:
Human(std::string n, int a, int s) : name(n), age(a), sleep_hours(s) {}
void introduce() {
std::cout << "Hello, I am " << name << ", and I am " << age << " years old.\n";
}
void sleep() {
std::cout << name << " is " << age << " years old who sleeps " << sleep_hours << " hours a night.\n";
}
};
int main() {
// Creating instances of each class with member variables
Human h("Alice", 30, 8);
// Introducing Humans
std::cout << "--- Human introducing ---\n";
h.introduce(); // Output: Hello, I am Alice, and I am 30 years old.
// Showing sleep behavior
std::cout << "--- Human sleep ---\n";
h.sleep(); // Output: Alice is 30 years old and sleeps 8 hours a night.
return 0;
}

View File

@@ -0,0 +1,48 @@
#include <iostream>
#include <string>
class Human {
private:
std::string name;
int age;
int sleep_hours;
public:
Human(std::string n, int a, int s) : name(n), age(a), sleep_hours(s) {}
void introduce() {
std::cout << "Hello, I am " << name << ", and I am " << age << " years old.\n";
}
void sleep() {
std::cout << name << " is " << age << " years old who sleeps " << sleep_hours << " hours a night.\n";
}
};
class Student : public Human {
public:
Student(std::string n, int a, int s) : Human(n, a, s) {}
};
int main() {
// Creating instances of each class with member variables
Human h("Alice", 30, 8);
Student s("Bob", 20, 5);
// Introducing Humans
std::cout << "--- Human introducing ---\n";
h.introduce(); // Output: Hello, I am Alice, and I am 30 years old.
std::cout << "--- Student introducing ---\n";
s.introduce(); // Output: I am a student. My name is Bob, and I am 20 years old.
// Showing sleep behavior
std::cout << "--- Human sleep ---\n";
h.sleep(); // Output: Alice is 30 years old and sleeps 8 hours a night.
std::cout << "--- Student sleep ---\n";
s.sleep(); // Output: Bob is a student, and they sleep 5 hours a night.
return 0;
}

View File

@@ -0,0 +1,57 @@
#include <iostream>
#include <string>
class Human {
// change this to protect so that these variables can be accessed by the derived class.
protected:
std::string name;
int age;
int sleep_hours;
public:
Human(std::string n, int a, int s) : name(n), age(a), sleep_hours(s) {}
void introduce() {
std::cout << "Hello, I am " << name << ", and I am " << age << " years old.\n";
}
void sleep() {
std::cout << name << " is " << age << " years old who sleeps " << sleep_hours << " hours a night.\n";
}
};
class Student : public Human {
public:
Student(std::string n, int a, int s) : Human(n, a, s) {}
void introduce() {
std::cout << "Hello, I am " << name << ", and I am " << age << " years old. Im majoring in 'How did I get here?' with a minor in 'It sounded easier when I signed up.'\n";
}
void sleep() {
std::cout << name << " is a college student who sleeps " << sleep_hours << " hours a night, and sleep 2 hours during boring lectures.\n";
}
};
int main() {
// Creating instances of each class with member variables
Human h("Alice", 30, 8);
Student s("Bob", 20, 5);
// Introducing Humans
std::cout << "--- Human introducing ---\n";
h.introduce(); // Output: Hello, I am Alice, and I am 30 years old.
std::cout << "--- Student introducing ---\n";
s.introduce(); // Output: I am a student. My name is Bob, and I am 20 years old.
// Showing sleep behavior
std::cout << "--- Human sleep ---\n";
h.sleep(); // Output: Alice is 30 years old and sleeps 8 hours a night.
std::cout << "--- Student sleep ---\n";
s.sleep(); // Output: Bob is a student, and they sleep 5 hours a night.
return 0;
}