Learn modern C++ 20 programming in this comprehensive course.
💻 Source code:
✏️ Course developed by Daniel Gakwaya. Check out his YouTube channel:
🐦 Twitter:
🔗 Want more from Daniel?
🔗 Join Daniel's discord server for support:
⭐️ Course Contents ⭐
(0:00:00) Introduction
(0:04:32) Chapter 1: Setting up the tools
Tools
Installing C++ Compilers on Windows
Installing VS Code on Windows
Configuring Visual Studio Code for C++ on Windows
Installing C++ Compilers on Linux
Installing Visual Studio Code on Linux
Configuring Visual Studio Code for C++ on Linux
Installing C++ Compilers on MacOs
Installing Visual Studio Code on MacOs
Configuring Visual Studio Code for C++ on MacOs
Online Compilers
(1:43:01) Chapter 2: Diving in
Your First C++ Program
Comments
Errors and Warnings
Statements and Functions
Data input and output
C++ Program Execution Model
C++ core language Vs Standard library Vs STL
(3:00:47) Chapter 3: Variables and data types
Variables and data types Introduction
Number Systems
Integer types : Decimals and Integers
Integer Modifiers
Fractional Numbers
Booleans
Characters And Text
Auto
Assignments
Variables and data types summary
(4:46:46) Chapter 4: Operations on Data
Introduction on Data operations
Basic Operations
Precedence and Associativity
Prefix/Postfix Increment & Decrement
Compound Assignment Operators
Relational Operators
Logical Operators
Output formatting
Numeric Limits
Math Functions
Weird Integral Types
Data Operations Summary
(7:01:58) Chapter 5: Flow Control
Flow Control Introduction
If Statements
Else If
Switch
Ternary Operators
Flow Control Summary
(7:53:49) Chapter 6: Loops
Loops Introduction
For Loop
While Loop
Do While Loop
(8:47:08) Chapter 7: Arrays
Introduction to Arrays
Declaring and using arrays
Size of an array
Arrays of characters
Array Bounds
(9:53:23) Chapter 8: Pointers
Introduction to Pointers
Declaring and using pointers
Pointer to char
Program Memory Map Revisited
Dynamic Memory Allocation
Dangling Pointers
When new Fails
Null Pointer Safety
Memory Leaks
Dynamically allocated arrays
(12:11:04) Chapter 9: References
Introduction to References
Declaring and using references
Comparing pointers and references
References and const
(12:44:29) Chapter 10: Character Manipulation and Strings
Introduction to Strings
Character Manipulation
C-string manipulation
C-String concatenation and copy
Introducing std::string
Declaring and using std::string
(14:12:47) Chapter 11: Functions
The One Definition Rule
First Hand on C++ Functions
Function Declaration and Function Definitions
Multiple Files – Compilation Model Revisited
Pass by value
Pass by pointer
Pass by reference
(16:03:20) Chapter 12: Getting Things out of functions
Introduction to getting things out of functions
Input and output parameters
Returning from functions by value
(16:32:35) Chapter 13: Function Overloading
Function Overloading Introduction
Overloading with different parameters
(16:49:00) Chapter 14: Lambda functions
Intro to Lambda Functions
Declaring and using lambda functions
Capture lists
Capture all in context
Summary
(17:40:08) Chapter 15: Function Templates
Intro to function templates
Trying out function templates
Template type deduction and explicit arguments
Template parameters by reference
Template specialization
(19:04:31) Chapter 16: C++20 Concepts Crash course
Intro to C++20 Concepts
Using C++20 Concepts
Building your own C++20 Concepts
Zooming in on the requires clause
Combining C++20 Concepts
C++20 Concepts and auto
(20:15:40) Chapter 17: Classes
Intro to classes
Your First Class
C++ Constructors
Defaulted constructors
Setters and Getters
Class Across Multiple Files
Arrow pointer call notation
Destructors
Order of Constructor Destructor Calls
The this Pointer
struct
Size of objects
(22:52:43) Chapter 18: Inheritance
Introduction to Inheritance
First try on Inheritance
Protected members
Base class access specifiers : Zooming in
Closing in on Private Inheritance
Resurrecting Members Back in Context
Default Constructors with Inheritance
Custom Constructors With Inheritance
Copy Constructors with Inheritance
Inheriting Base Constructors
Inheritance and Destructors
Reused Symbols in Inheritance
(26:21:03) Chapter 19: Polymorphism
Introduction to Polymorphism
Static Binding with Inheritance
Dynamic binding with virtual functions
Size of polymorphic objects and slicing
Polymorphic objects stored in collections (array)
Override
Overloading, overriding and function hiding
Inheritance and Polymorphism at different levels
Inheritance and polymorphism with static members
Final
Virtual functions with default arguments
Virtual Destructors
Dynamic casts
Polymorphic Functions and Destructors
Pure virtual functions and abstract classes
Abstract Classes as Interfaces
I could never imagine the 30 hours work gone and providing the content for free. Thank you 💗 so much for your efforts 🎉
@Lunar Moony it worth every penny tho. The course explains many things in details
@Hard Days I had one doubt are there any questions in between the explanations ? I am going to start the course so just wanted to know
@Ks Ai there are many tests and questions in the end of every section.
@Hard Days thank you very much
@Bagginses theres a 25 dolar course offered by the guy in the video in the webpage in the description
I just started C++ today and you guys drop this course. You cannot imagine how much great work you have done. I cannot thank free code camp enough.
Naresh I technology
Code with Harry
Apna college
And there are many YouTube channel but I will suggest Indian one
@Rushabh Pandit doing the same thing right now!
Have you completed it M
@Rushabh Pandit thank you your comment was worth it
I was really confused about what was happening
that so sicks dude , good luck !!
Thanks so much for hosting our course . I’ve learnt so much from the channel myself! Knowing that even a single individual benefits from the course gives me great pleasure.
If anyone has specific questions or just wants to hang out talking about tech or C++, consider joining the discord server shared in the description. Can’t wait to see what you guys build with C++.
Thanks Man!❤
@象棋大师 Where can I find the in between info?
@Cobby Cobb yes, but when you go to the installation sites you just need to get the newest ones and rename it (for instance, instead of 11.2.0 you would type 11.3.0
You are an amazing man.
You’re amazing!
I genuinely don’t have words to thank you guys. You guys over at freecodecamp are providing us with content that is far better than paid courses as well. I am a bachelors of commerce student(a tech nerd at heart) and you guys have helped me in learning beginner and intermediate python, html , c and I have a lot more of your videos in my watch later playlist waiting to be watched. Thank you so so much guys, much love
The amount of work that must have gone into this must be phenomenal hats off to you guys. Could you make a similar one for Java
I’m a quarter of the way through the video. So far he does all the chewing for us, understanding step by step is effortless !
I’m already a java programmer, so until the reference and pointers courses, this is easy for me.
Yet, if it is your first time with programming language, … it is the right place !
Are there any solved problems. I just don’t wanna learn syntax
35:40 mine says:
‘cmd’ is not recognized as an internal or external command,
operable program or batch file.
Build finished with error(s).
The terminal process failed to launch (exit code: -1).
Terminal will be reused by tasks, press any key to close it.
plz help me fix dis!!
The amount of work that must have gone into this must be phenomenal hats off to you guys. Could you make a similar one for Java
Chapter 2: Diving in
Your First C++ Program 1:43:05
Comments 1:55:56
Errors and Warnings 2:01:56
Statements and Functions 2:13:13
Data input and output 2:31:38
C++ Program Execution Model 2:49:57
C++ core language Vs Standard library Vs STL 2:56:43
Chapter 3: Variables and data types
Variables and data types Introduction 3:00:47
Number Systems 3:04:50
Integer types : Decimals and Integers
Integer Modifiers 3:40:44
Fractional Numbers 3:54:00
Booleans 4:16:40
Characters And Text 4:24:50
Auto 4:32:06
Assignments 4:38:07
Variables and data types summary 4:45:43
have you completed?
@ashuvlogs Yes.
THANK YOU SO MUCH MA BRATHA
Thanks. This should be in the description.
thankyou
I’m speechless, been looking for a course like this for more than a year and you guys just released it for free and with 30h+ of content, thanks a lot for this, it’s means a lot to me and my learning, and I’m quite sure many people think the same! Thanks FCC and Daniel Gakwaya for contributing so much to the C++ and development community!
have ya even completed it?
@ashuvlogs Yep
Thanks, Daniel. This is a very comprehensive, but easy-to-follow course. I went through it all in painstaking detail; including environment setup it’s taken me about three weeks. I’m interested in taking the full Udemy course, but I’ve missed the current discount window. If there is another discount on the price soon I’ll definitely be signing up…
Love that you guys keep coming up with free and relevant videos, that just helps the new and budding (whatever language) newbie. I’ve learnt a lot from your videos and always view them even if not in the area I’m looking in. Keep up all the good work!
Amazing content as usual. Keep up being great!
Not a beginner when it comes to programming in general, but damn even the introductory stuff is useful and feels nice to watch.
Appreciate your work guys, a 31 hour course for free is not something you see everyday.
I love that he uses the term ‘Crack it up’ when he refers to opening a folder. Such a great course – I’m about 1/4 way through right now
Chapter 01 : Setting up the tools :
Chapter 02: Diving in :
Your First C++ Program 1:43:05
Comments 1:55:56
Errors and Warnings 2:01:56
Statements and Functions 2:13:13
Data input and output 2:31:38
C++ Program Execution Model 2:49:57
C++ core language Vs Standard library Vs STL 2:56:43
Chapter 03 : Variables and data types :
Introduction 3:00:47
Number Systems 3:05:07
Integers 3:21:53
Integer Modifiers 3:40:45
Fractional Numbers 3:45:00
Booleans 4:16:40
Characters and text 4:24:49
Auto 4:32:06
Assignments 4:38:06
recap 4:45:42
Chapter 4: Operations on Data :
Introduction on Data operations 4:46:46
Basic operations 4:47:32
Precedence and Associativity 4:58:01
Prefix and postfix + and – 5:12:07
Compound Operators 5:23:22
Relational Operators : comparing stuff 5:31:43
Logical Operators 5:40:52
Output Formatting 5:56:09
Numeric Limits 6:33:27
Math Functions 6:41:10
Weird Integral types 6:54:24
Summary of Operations on data 6:59:41
Chapter 5 : Flow Control : Conditional Programming
Flow Control Introduction 7:02:00
If Statement 7:03:31
Else if 7:20:50
Switch 7:28:47
Ternary Operator 7:42:45
Summary of Flow control 7:52:20
Chapter 6 : Loops
Loops Introduction 7:53:49
for loop 7:55:20
While loop 8:25:20
Do while loops 8:36:54
Chapter 7 : Arrays
Introduction to Arrays 8:47:08
Declaring and using Arrays 8:48:46
Size of An Array 9:15:53
Arrays of characters 9:26:44
Bounds of an Array 9:46:47
Chapter 8: Pointers 9:53:23
Introduction to Pointers 9:53:46
Declaring and using pointers 9:56:03
Pointer to char 10:14:49
Program Memory Map Revisited 10:27:27
Dynamic Memory Allocation 10:36:31
Dangling Pointers 11:05:45
When new Fails 11:24:15
Null Pointer Safety 11:38:01
Memory Leaks 11:45:18
Dynamically allocated arrays 11:55:45
Chapter 9: References 12:11:04
Introduction to References 12:11:04
Declaring and using references 12:11:58
Comparing pointers and references 12:22:28
References and const
Chapter 10: Character Manipulation and Strings 12:44:30
Introduction to Strings
Character Manipulation
C-string manipulation
C-String concatenation and copy
Introducing std::string
Declaring and using std::string
hey… bro at first we have to extract that mingw file??
or without extraction it will work??
@MITHRA SAI you need to extract it otherwise won’t work
EXERCISE
A student is identified by the following elements:
The registration number of the student;
The name of the student;
Date of birth of the student;
Place of birth of the student;
Department of the student;
The level of studies;
The option of the student;
The gender of the student;
List of subjects done by the student with associated credit values and marks;
Telephone number of the student;
1. Propose a class called Student with these components including getters and setters for each
member data to represent a student.
2. Propose a data structure to be used to store a total of 500 students.
3. Give the declaration and definition of the different constructors of the class Student:
a) It takes two parameters assigned respectively to the registration number and the name.
The gender by default is assigned as male.
b) It takes three parameters to be assigned to the registration number, the name and the
Telephone number of the student respectively.
c) It takes as parameters The registration number, name, date of birth, place of birth,
Department, level of studies, option of the student, gender, subjects done by the student
with associated credit values and telephone number of the student
to be assigned to the corresponding member data.
4. Add a method called registration that will be used to register a new student. displays the
information of a Student.
5. Add a method called display that displays all the information of a registered Student.
6. Add a member function called average that will evaluate and return the average of a
registered student.
7. Add a member function called search that uses the registration number of the student and
returns all his information it the Student is registered.
4. Add a member function called grade that takes in the average of a student and returns his
corresponding grade based on the following criteria.
Range of the average grade
average<10 FAILED
10
Chapter 01 : Setting up the tools :
Chapter 02: Diving in :
– Your First C++ Program 1:43:05
– Comments 1:55:56
– Errors and Warnings 2:01:56
– Statements and Functions 2:13:13
– Data input and output 2:31:38
– C++ Program Execution Model 2:49:57
– C++ core language Vs Standard library Vs STL 2:56:43
Chapter 03 : Variables and data types :
– Introduction 3:00:47
– Number Systems 3:05:07
– Integers 3:21:53
– Integer Modifiers 3:40:45
– Fractional Numbers 3:45:00
– Booleans 4:16:40
– Characters and text 4:24:49
– Auto 4:32:06
– Assignments 4:38:06
– recap 4:45:42
Chapter 4: Operations on Data :
– Introduction on Data operations 4:46:46
– Basic operations 4:47:32
– Precedence and Associativity 4:58:01
– Prefix and postfix + and – 5:12:07
– Compound Operators 5:23:22
– Relational Operators : comparing stuff 5:31:43
– Logical Operators 5:40:52
– Output Formatting 5:56:09
– Numeric Limits 6:33:27
– Math Functions 6:41:10
– Weird Integral types 6:54:24
– Summary of Operations on data 6:59:41
Chapter 5 : Flow Control : Conditional Programming
– Flow Control Introduction 7:02:00
– If Statement 7:03:31
– Else if 7:20:50
– Switch 7:28:47
– Ternary Operator 7:42:45
– Summary of Flow control 7:52:20
Chapter 6 : Loops
– Loops Introduction 7:53:49
– for loop 7:55:20
– While loop 8:25:20
– Do while loops 8:36:54
Chapter 7 : Arrays
– Introduction to Arrays 8:47:08
– Declaring and using Arrays 8:48:46
– Size of An Array 9:15:53
– Arrays of characters 9:26:44
– Bounds of an Array 9:46:47
Chapter 8 : Pointers
-Introduction to Pointers 9:53:23
-Declaring and Using Pointers 9:56:04
-Pointer to Char 10:14:49
-Program Memory Map 10:27:26
-Dynamic Memory Allocation 10:36:32
-Dangling Pointers 11:05:45
-When ‘New’ Fails 11:24:15
-Null Pointer Safety 11:38:00
-Memory Leaks 11:45:18
-Dynamic Arrays 11:55:46
Chapter 9: References
-Introduction to References 12:11:04
-Declaring and using references
-Comparing pointers and references 12:22:28
-References and const @
Chapter 10: Character Manipulation and Strings
-Introduction to Strings 12:44:29
-Character Manipulation
-C-string manipulation 13:09:32
-C-String concatenation and copy 13:41:45
-Introducing std::string 14:01:19
-Declaring and using std::string 14:03:39
Chapter 11: Functions
-The One Definition Rule 14:12:43
-First Hand on C++ Functions 14:28:25
-Function Declaration and Function Definitions 15:00:50
-Multiple Files – Compilation Model Revisited 15:15:31
-Pass by value 15:42:31
-Pass by pointer 15:50:31
-Pass by reference 15:57:49
Chapter 12: Getting Things out of functions
-Introduction to getting things out of functions 16:03:20
-Input and output parameters 16:04:03
-Returning from functions by value 16:18:00
Chapter 13: Function Overloading
-Function Overloading Introduction 16:32:35
-Overloading with different parameters
Chapter 14: Lambda functions
-Intro to Lambda Functions 16:49:00
-Declaring and using lambda functions
-Capture lists 17:20:27
-Capture all in context 17:33:00
-Summary
Chapter 15: Function Templates
-Intro to function templates 17:40:08
-Trying out function templates 17:41:07
-Template type deduction and explicit arguments 18:19:53
-Template parameters by reference 18:35:50
-Template specialization 18:46:56
Chapter 16: C++20 Concepts Crash course
-Intro to C++20 Concepts 19:04:31
-Using C++20 Concepts 19:06:47
-Building your own C++20 Concepts 19:25:35
-Zooming in on the requires clause 19:42:46
-Combining C++20 Concepts 19:59:55
-C++20 Concepts and auto 20:09:42
Chapter 17: Classes
-Intro to classes 20:15:40
-Your First Class 20:16:33
-C++ Constructors 20:38:04
-Defaulted constructors 20:53:37
-Setters and Getters 20:59:44
-Class Across Multiple Files 21:10:07
-Arrow pointer call notation 21:30:51
-Destructors 21:42:50
-Order of Constructor Destructor Calls 22:05:46
-The this Pointer 22:11:06
-struct 22:33:33
-Size of objects 22:42:37
Chapter 18: Inheritance
-Introduction to Inheritance 22:52:43
-First try on Inheritance 22:56:00
-Protected members 23:21:12
-Base class access specifiers : Zooming in 23:32:05
-Closing in on Private Inheritance 24:07:45
-Resurrecting Members Back in Context 24:26:36
-Default Constructors with Inheritance 24:47:00
-Custom Constructors With Inheritance 24:56:00
-Copy Constructors with Inheritance 25:26:56
-Inheriting Base Constructors 25:51:54
-Inheritance and Destructors 26:06:00
-Reused Symbols in Inheritance 26:12:24
Chapter 19: Polymorphism
-Introduction to Polymorphism 26:21:03
-Static Binding with Inheritance 26:26:53
-Dynamic binding with virtual functions 26:55:54
-Size of polymorphic objects and slicing 27:14:31
-Polymorphic objects stored in collections (array) 27:26:37
-Override 27:45:42
-Overloading, overriding and function hiding 27:52:45
-Inheritance and Polymorphism at different levels 28:07:38
-Inheritance and polymorphism with static members 28:33:03
-Final 28:49:14
-Virtual functions with default arguments 29:07:42
-Virtual Destructors 29:23:18
-Dynamic casts 29:35:41
-Polymorphic Functions and Destructors 30:08:18
-Pure virtual functions and abstract classes 30:24:44
-Abstract Classes as Interfaces 30:43:37
❤️❤️❤️
There a special place in heaven for such dudes. Grazie 🤝
.
Legend 👏
You are a good man, thank you.
First of all: thank you so much for this great-quality course, Daniel & FreeCodeCamp! I still need to watch 7 remaining hours of the course, however, I have a doubt regarding classes. When you create a class Person and describe a “get_age” function for example (that one from 23:41:06), why do you apply “const” before the curly brackets? I have seen this parameter on other functions as well, I have even researched online, but I still didn’t get it.
This tutorial is worth more than six months of courses at the best universities!
Hope to see more tutorials from the instructor, In-depth explanations, and simple slides with great implementation on vs code.
Thanks a lot.
01:43:05.000 Your First C++ Program
01:55:56.000 Comments
02:01:56.000 Errors and Warnings
02:13:13.000 Statements and Functions
02:31:38.000 Data input and output
02:49:57.000 C++ Program Execution Model
02:56:43.000 C++ core language Vs Standard library Vs STL
03:00:47.000 Introduction
03:05:07.000 Number Systems
03:21:53.000 Integers
03:40:45.000 Integer Modifiers
03:45:00.000 Fractional Numbers
04:16:40.000 Booleans
04:24:49.000 Characters and text
04:32:06.000 Auto
04:38:06.000 Assignments
04:45:42.000 Variables and data types
04:46:46.000 Introduction on Data operations
04:47:32.000 Basic operations
04:58:01.000 Precedence and Associativity
05:12:07.000 Prefix and postfix + and
05:23:22.000 Compound Operators
05:31:43.000 Relational Operators : comparing stuff
05:40:52.000 Logical Operators
05:56:09.000 Output Formatting
06:33:27.000 Numeric Limits
06:41:10.000 Math Functions
06:54:24.000 Weird Integral types
06:59:41.000 Summary of Operations on data
07:02:00.000 Flow Control Introduction
07:03:31.000 If Statement
07:20:50.000 Else if
07:28:47.000 Switch
07:42:45.000 Ternary Operator
07:52:20.000 Summary of Flow control
07:53:49.000 Loops Introduction
07:55:20.000 for loop
08:25:20.000 While loop
08:36:54.000 Do while loops
08:47:08.000 Introduction to Arrays
08:48:46.000 Declaring and using Arrays
09:15:53.000 Size of An Array
09:26:44.000 Arrays of characters
09:46:47.000 Bounds of an Array
09:53:23.000 Introduction to Pointers
09:56:04.000 Declaring and Using Pointers
10:14:49.000 Pointer to Char
10:27:26.000 Program Memory Map
10:36:32.000 Dynamic Memory Allocation
11:05:45.000 Dangling Pointers
11:24:15.000 When ‘New’ Fails
11:38:00.000 Null Pointer Safety
11:45:18.000 Memory Leaks
11:55:46.000 Dynamic Arrays
12:11:04.000 Introduction to References
12:11:58.000 Declaring and using references
12:22:28.000 Comparing pointers and references
12:37:29.000 References and con
12:44:29.000 Character Manipulation and strings
13:09:32.000 Cstring manipulation
13:41:45.000 CString concatenation and copy
14:01:19.000 Introducing std::string
14:03:39.000 Declaring and using std::string
14:12:43.000 The One Definition Rule
14:28:25.000 First Hand on C++ Functions
15:00:50.000 Function Declaration and Function Definitions
15:15:31.000 Multiple Files Compilation Model Revisited
15:42:31.000 Pass by value
15:50:31.000 Pass by pointer
15:57:49.000 Pass by reference
16:03:20.000 Introduction to getting things out of functions
16:04:03.000 Input and output parameters
16:18:00.000 Returning from functions by value
16:32:35.000 Function Overloading Introduction
16:34:24.000 Overloading with different pa
16:49:00.000 Intro to Lambda Functions
16:49:38.000 Declaring and using lambda functions
17:20:27.000 Capture lists
17:33:00.000 Capture all in context
17:40:08.000 Intro to function templates
17:41:07.000 Trying out function templates
18:19:53.000 Template type deduction and explicit arguments
18:35:50.000 Template parameters by reference
18:46:56.000 Template specialization
19:04:31.000 Intro to C++20 Concepts
19:06:47.000 Using C++20 Concepts
19:25:35.000 Building your own C++20 Concepts
19:42:46.000 Zooming in on the requires clause
19:59:55.000 Combining C++20 Concepts
20:09:42.000 C++20 Concepts and auto
20:15:40.000 Intro to classes
20:16:33.000 Your First Class
20:38:04.000 C++ Constructors
20:53:37.000 Defaulted constructors
20:59:44.000 Setters and Getters
21:10:07.000 Class Across Multiple Files
21:30:51.000 Arrow pointer call notation
21:42:50.000 Destructors
22:05:46.000 Order of Constructor Destructor Calls
22:11:06.000 The this Pointer
22:33:33.000 struct
22:42:37.000 Size of objects
22:52:43.000 Introduction to Inheritance
22:56:00.000 First try on Inheritance
23:21:12.000 Protected members
23:36:57.033 Base class access specifiers : Zooming in
24:07:42.666 Closing in on Private Inheritance
24:26:38.094 Resurrecting Members Back in Context
24:47:05.000 Default Constructors with Inheritance
24:57:37.766 Custom Constructors With Inheritance
25:26:56.400 Copy Constructors with Inheritance
25:51:54.000 Inheriting Base Constructors
26:12:20.533 Reused Symbols in Inheritance
26:21:07.666 Chapter 19: Polymorphism
26:55:24.100 Dynamic binding with virtual functions
27:14:41.666 Size of polymorphic objects and slicing
27:26:47.866 Polymorphic objects stored in collections
27:45:51.900 Override
27:52:45.933 Overloading, overriding and function hiding
28:07:39.800 Inheritance and Polymorphism at different levels
28:33:07.666 Inheritance and polymorphism with static members
28:49:13.833 Final
29:07:42.466 Virtual functions with default arguments
29:23:21.066 Virtual Destructors
29:35:42.399 Dynamic casts
30:08:23.066 Polymorphic Functions and Destructors
30:24:46.754 Pure virtual functions and abstract classes
30:43:37.633 Abstract Classes as Interfaces
Dude, thanks
thx
Thank you very much, bro❤️✌️ The world is going to be good😁
God bless this human
Not all heroes wear capes