斗破C++目录:
斗破C++编程入门系列之前言(斗之气三段)
斗破C++编程入门系列之二:Qt的使用介绍(斗之气三段)
斗破C++编程入门系列之三:数据结构(斗之气三段)
斗破C++编程入门系列之四:运算符和表达式(斗之气五段)
斗破C++编程入门系列之五:算法的基本控制结构之选择结构(斗之气八段)
斗破C++编程入门系列之六:算法的基本控制结构之循环结构(斗之气八段)
斗破C++编程入门系列之七:自定义数据类型(斗之气八段)
斗破C++编程入门系列之八:函数的定义与调用(斗之气八段)
斗破C++编程入门系列之九:函数重载与模板函数(斗之气九段)
斗破C++编程入门系列之十:类与对象:类的声明、成员的访问控制和对象(二星斗者)
斗破C++编程入门系列之十一:类与对象:构造函数和析构函数(四星斗者)
斗破C++编程入门系列之十二:类与对象:类的组合(五星斗者)
斗破C++编程入门系列之十三:类与对象:类模板(六星斗者)
斗破C++编程入门系列之十四:C++程序设计必知:作用域和可见性(六星斗者)
斗破C++编程入门系列之十五:C++程序设计必知:变量生存期(六星斗者)
斗破C++编程入门系列之十六:C++程序设计必知:类的静态成员(九星斗者)彩蛋)
斗破C++编程入门系列之十七:C++程序设计必知:友元(九星斗者)彩蛋)
斗破C++编程入门系列之十八:C++程序设计必知:常引用、常对象(九星斗者)彩蛋)
斗破C++编程入门系列之十九:C++程序设计必知:多文件结构和编译预处理命令(九星斗者)
斗破C++编程入门系列之二十:数组、指针和字符串:数组的声明和使用(一星斗师)
斗破C++编程入门系列之二十一:数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数(一星斗师)
斗破C++编程入门系列之二十二:数组、指针和字符串:指针变量的声明、地址相关运算–“*”和“&”(一星斗师)
斗破C++编程入门系列之二十三:数组、指针和字符串:指针的赋值和指针运算(一星斗师)
斗破C++编程入门系列之二十四:数组、指针和字符串:指向数组元素的指针和指针数组(一星斗师)
斗破C++编程入门系列之二十五:数组、指针和字符串:指针用作函数参数、指针型函数和函数指针(一星斗师)
斗破C++编程入门系列之二十六:数组、指针和字符串:动态内存分配和释放(一星斗师)
斗破C++编程入门系列之二十七:数组、指针和字符串:string类(一星斗师)
斗破C++编程入门系列之二十八:继承与派生:概念介绍与派生类的声明(一星斗师)
斗破C++编程入门系列之二十九:继承与派生:派生类从基类继承的过程(一星斗师)
斗破C++编程入门系列之三十:继承与派生:派生类对基类成员的访问控制之公有继承(一星斗师)
斗破C++编程入门系列之三十一:继承与派生:派生类对基类成员的访问控制之保护继承与私有继承(一星斗师)
鸡啄米C++
记住首页不迷路:
http://www.jizhuomi.com/software/129.html
斗破观看顺序:
https://v.haohuitao.cc/yhplay/336-1-2.html
第一季☞第二季前2集☞特别篇1☞第二季3~12集☞特别篇2沙之澜歌☞第三季☞第四季☞三年之约☞缘起☞年番
斗气大陆等级:
斗气有十一个阶别,斗之气,斗者,斗师,大斗师,斗灵,斗王,斗皇,斗宗,斗尊,斗圣,斗帝。
斗气大陆上很久没有出现过斗帝了。
一、夺回异火
美杜莎女王的行为引发了天地异像,为了族人的未来,她义无反顾的与异火进行着最后的抗争,然而在灵魂体与天雷触碰的一瞬间,她还是失败了,与天雷一并化做漫天的鳞羽。
正当萧炎准备用青莲台收取青莲地心火之时,一只可爱的小动物突然出现,原来她是美杜莎女王的伴生灵魂–紫幽炎蛇,是只六阶魔兽,没想到这所谓的进化,便是进化灵魂,用灵魂之力凝聚成真正的身体,若机缘足够,激发体内的远古巨兽血脉,就能进化为堪比斗宗强者的七彩吞天蟒。
神殿外,墨巴斯等人与丹王形成对峙之势,然而只有四人的蛇族还未曾有对付斗皇的能力,他们在等炎刺及南蛇等人。
殿内萧炎收下了紫幽灵蛇,同时收取了青莲地心火,看似顺利的局面是否真的如此,后续如何再来分解。
二、C++:派生类对基类成员的访问控制之保护继承与私有继承(一星斗师)
与公有继承不同,我们来看看保护继承及私有继承。
- 在保护继承方式中,基类的公有成员和保护成员被派生类继承后变成派生类的保护成员,而基类的私有成员在派生类中不能访问。
- 在私有继承方式中,基类的公有成员和保护成员被派生类继承后变成派生类的私有成员,而基类的私有成员在派生类中不能访问。
我们尝试将public继承改为protected继承,看看原先public属性的函数是否变成的protected。我们为远古灵蛇新增一个公有函数。
#ifndef ANCIENTSNAKE_H
#define ANCIENTSNAKE_H
#include <QDebug>
class AncientSnake
{
public:
AncientSnake();
public:
void use_ancient_fighting_skill(){
qDebug() << "使用蛇族远古斗技";
}
void activate_bloodline(){
qDebug() << "激活血脉";
}
protected:
void swallow_strange_fire(){
qDebug() << "吞噬异火";
}
private:
void use_ancient_unique_skill(){
qDebug() << "远古灵蛇独有的秘技";
}
};
#endif // ANCIENTSNAKE_H
然后使用protected的方式继承,代码如下:
#ifndef QUEEN_H
#define QUEEN_H
#include "ancientsnake.h"
#include "person.h"
//美杜莎女王继承了远古斗技
//美杜莎女王继承了人类的形态
class Queen
: protected AncientSnake
, public Person<double>
{
public:
Queen();
public:
//定义与父类相同的成员函数
void use_ancient_fighting_skill(){
qDebug() << "使用蛇族远古斗技 升级版本";
}
public:
//定义与父类相同的成员变量
QString name;
public:
//定义自己的函数
void use_secret_skill(){
qDebug() << "使用蛇族秘术";
//调用远古灵蛇的protected属性函数
swallow_strange_fire();
}
};
#endif // QUEEN_H
大家可以试试在main函数中使用meidusha能否成功调activate_bloodline。答案是不能的,因为是protected继承,原先public的属性变为了proteced,只能在类内部使用。
同样我们如果使用私有继承,那之前public及protected属性,在继承之后也都会变成private,只能在类内部调用,外部不可调用。可以修改代码,看看原先的程序报什么错误。
#ifndef QUEEN_H
#define QUEEN_H
#include "ancientsnake.h"
#include "person.h"
//美杜莎女王继承了远古斗技
//美杜莎女王继承了人类的形态
class Queen
: private AncientSnake
, public Person<double>
{
public:
Queen();
public:
//定义与父类相同的成员函数
void use_ancient_fighting_skill(){
qDebug() << "使用蛇族远古斗技 升级版本";
}
public:
//定义与父类相同的成员变量
QString name;
public:
//定义自己的函数
void use_secret_skill(){
qDebug() << "使用蛇族秘术";
//调用远古灵蛇的protected属性函数
swallow_strange_fire();
}
};
#endif // QUEEN_H
其实我们很少会使用protected及private继承,因为继承的目的之一是复用代码,使用这两种继承方式,相当于断了后面想要继承的类的复用。
三、英语
先看几个单词:
- protected 保护的
- private 私有的
- swallow 吞咽
- strange 奇异的
再看几个句子:
- For(为了) the future(未来) of her (她的)people(族人), she (她)fought(战斗) against(对抗) the flames(异火) without hesitation(没有任何犹豫) in(在) the final(最后) battle(战争).
- 为了族人的未来,她义无反顾的与异火进行着最后的抗争。
For 引导了原因状语从句。
without hesitation 义无反顾