除了“构造函数”和“析构函数”,
父类的所有成员函数,以及数据成员,都会被子类继承!
下面的是自写的一段父类和子类的派生和继承
Man(父类)
.h
#pragma once
#include <string>
using namespace std;
class Man
{
public:
Man();
Man(string name, int age);
~Man();
string getName();
int getAge();
string discription();
private:
string name;
int age;
};
.cpp
#include "Man.h"
#include <sstream>
Man::Man()
{
}
Man::Man(string name, int age)
{
this->name = name;
this->age = age;
}
Man::~Man()
{
}
string Man::getName()
{
return name;
}
int Man::getAge()
{
return age;
}
string Man::discription()
{
stringstream ret;
ret << "名字-" << name << " 年龄-" << age;
return ret.str();
}
Son(子类):
.h
#pragma once
#include "Man.h"
using namespace std;
class Son :
public Man
{
public:
Son(string name, int age, string game);
string getGame();
string discription();
private:
string game;
};
.cpp
#include "Son.h"
#include <sstream>
Son::Son(string name, int age, string game):Man(name,age)
{
this->game = game;
}
string Son::getGame()
{
return game;
}
string Son::discription()
{
stringstream ret;
ret << "名字-" << getName() << " 年龄-" << getAge() << " 游戏-" << game;
return ret.str();
}
main.cpp
#include "Man.h"
#include "Son.h"
#include <iostream>
using namespace std;
int main(void) {
Man man("father", 50);
Son son("son", 20, "game~");
cout << man.discription() << endl;
cout << son.discription() << endl;
system("pause");
return 0;
}
总结:
// 创建Son对象时, 会调用构造函数!
// 会先调用父类的构造函数, 用来初始化从父类继承的数据
// 再调用自己的构造函数, 用来初始化自己定义的数据
// 没有体现父类的构造函数, 那就会自动调用父类的默认构造函数!!!
// 子类的成员函数中, 不能访问从父类继承的private成员
// 子类对象调用方法时, 先在自己定义的方法中去寻找, 如果有, 就调用自己定义的方法
// 如果找不到, 就到父类的方法中去找, 如果有, 就调用父类的这个同名方法
// 如果还是找不到, 就是发生错误!
子类, 一般会添加自己的数据成员/成员函数,
或者, 重新定义从父类继承的方法!!! 子类对象就会调用自己重新定义的方法, 不会调用父类的同名方法
标签:include,string,name,派生,28,C++,Son,父类,Man From: https://blog.csdn.net/m0_57667919/article/details/143112596