首页 > 编程语言 >【28】C++派生和继承的实现

【28】C++派生和继承的实现

时间:2024-10-21 21:49:17浏览次数:3  
标签:include string name 派生 28 C++ Son 父类 Man

除了“构造函数”和“析构函数”,

父类的所有成员函数,以及数据成员,都会被子类继承!

下面的是自写的一段父类和子类的派生和继承

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

相关文章

  • C++可调用对象与function
    目录C++语言中可调用的对象不同类型可能具有相同的调用形式标准库function类型重载的函数与functionC++语言中可调用的对象函数函数指针lambda表达式bind创建的对象重载了函数调用运算符的类和其他对象一样,可调用的对象也有类型。例如,每个lambda有它自己唯一的(未命名)类类......
  • C/C++指针的概念
              指针作为C/C++中一个重要的概念,是每个C/C++程序员必备技能,今天就来说说它。一、指针的概念指针是一种变量,它存储的是另外一个变量的内存地址。在C/C++中,通过指针可以间接访问和操作内存中的数据。例如:intnum=0;int*ptr=&num;这里ptr是一个......
  • 数组的概念(C++)
        今天介绍一下数组。在C++中,数组就是一种用于存储相同类型元素的容器,也是一种数据结构,在编程中被广泛使用。一、定义与组成    数组是由相同类型的元素组成的集合,这些元素在内存中是连续存储的。例如,一个整数数组可以存储多个整数,一个字符数组可以存储......
  • C++程序设计基础实验1
    任务一:源代码task1.cpp#include<iostream>#include<string>#include<vector>#include<algorithm>usingnamespacestd;//声明//模板函数声明template<typenameT>voidoutput(constT&c);//普通函数声明voidtest1();voidtest2();void......
  • C++研发笔记4——C语言程序设计初阶学习笔记2
            从今天开始我们开始第二模块初识C语言的学习,在本模块中我们将会涉及到一下14个内容:什么是C语言、第一个C语言程序、数据类型、变量、常量、字符串+转义字符+注释、选择语句、循环语句、函数、数组、操作符、常见关键字、define定义常量和宏、指针......
  • 国标GB28181视频平台EasyCVR私有化部署视频平台偏远地区如何解决视频监控的需求
    一、背景需求在一些偏远地区,也具有视频监控的需求。但是这类场景中,一般无法就近获取市电,如果要长距离拉取市电,建设的成本非常高且长距离传输有安全隐患,因此风光互补远程视频监控方案的需求也较多。利用风光电转化原理为偏远或无电区域的视频监控设备提供电力供应,从而满足偏远地区......
  • Leetcode 328. Odd Even Linked List
    我的解法没有什么需要推理的地方,要注意一开始要让cur走的比odd和even快,否则会导致cur的next被odd和even修改,代码里有注释。ListNode*oddEvenList(ListNode*head){if(!head){returnhead;}ListNode*cur=nullptr,*headofOdd=h......
  • C++静态成员变量和静态成员函数的使用
    1.静态成员变量:定义在类中的静态成员,以static关键字初始化和成员变量区别:a.可以通过类名::变量名进行调用,可访问性还是由(public,private,protected)进行限制 例如下面的mystaitcClass::_id,protected属性内容无法直接进行访问,若要直接访问需要修改为public2.静态成员函数:类似可以通过......
  • 高效并行计算:使用C++中的std::thread实现多线程编程
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在现代计算中,随着多核处理器的普及,如何充分利用硬件资源以提升程序性能成为关键问题之一。C++标准库提供了丰富的多线程支持,其中std::thread是用于实现并发计算的核心工具之一。通过合理的多线程设计,程序可以实现......
  • 用C++构建自己的编译器:从词法分析到代码生成
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界本文将带领读者从零开始构建一个简单的C++编译器。我们将逐步讲解如何进行词法分析、语法分析,以及如何将这些结果转换为目标代码。这篇文章的目标是帮助读者理解编译器的基本构成和工作原理,并提供可扩展的编译器......