子类的构造函数后跟冒号后的基类构造函数是什么意思?
What does it mean that a sub-class's constructor followed by a base class constructor after a colon?
我想知道基类构造函数后面的代码是做什么的。这是代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Person
{
public:
Person() : name(""), age(0) {}
protected:
string name;
int age;
};
class Student : public Person
{
public:
Student() : Person::Person() {}
private:
int student_id;
};
我知道代码在类Person
中做了什么:
Person() : name(""), age(0) {}
但我不明白这条线在课堂Student
中做了什么:
Student() : Person::Person() {}
那么冒号后Person::Person()
的含义是什么?
Student() : Person::Person() {}
在派生Student
构造函数的成员初始化列表中调用基类Person
的构造函数。
请注意,Person::Person()
可以简化为仅在该上下文中Person()
,因为无需使用其类类型对其进行完全限定。
Student() : Person() {}
的成员初始化列表中指定基类构造函数,除非派生构造函数将输入值传递给基类构造函数。 您的代码没有,因此您可以选择完全省略基类构造函数调用。 Person()
是一个默认构造函数,编译器将自动为您调用。
Student() {}
在这种情况下,您还可以选择完全省略Student
构造函数,因为它不会显式初始化任何其他内容。
相关文章:
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 这里的字符串函数是什么意思
- 调用'Node'构造函数是不明确的
- 这个函数是什么意思(我的英语sry)
- C++ 中的 use 函数是什么?
- C++中的编译时函数是什么?
- 使用 DnsQuery 或 getaddrinfo 的正确函数是什么?
- 复制和移动构造函数是自动好友吗?
- 这个构造函数是做什么的
- Lua 中看起来像表的函数是什么?
- 子类的构造函数后跟冒号后的基类构造函数是什么意思?
- 初始化对象后,用隐式转换而不是赋值运算符调用构造函数有什么意义
- 具有多个非可选参数的转换构造函数是什么样子的?为什么它有意义
- 默认值的参数化构造函数是什么意思
- 你能用英语尽可能简单地解释一下什么是复制构造函数,什么时候需要使用它吗?
- 我的复制构造函数是错误的.它们应该是什么样子?
- 将基类构造函数强制转换为派生类构造函数是什么意思?
- 错误到底是什么,对于错误地调用可移动和不可复制成员的复制构造函数有什么解决方法
- Tensorflow - ops 构造函数是什么意思