斗破C++编程入门系列之十四:C++程序设计必知:作用域和可见性

devtools/2024/10/18 18:28:37/

斗破C++目录:

斗破C++编程入门系列之前言(斗之气三段)
斗破C++编程入门系列之二:Qt的使用介绍(斗之气三段)
斗破C++编程入门系列之三:数据结构(斗之气三段)
斗破C++编程入门系列之四:运算符和表达式(斗之气五段)
斗破C++编程入门系列之五:算法的基本控制结构之选择结构(斗之气八段)
斗破C++编程入门系列之六:算法的基本控制结构之循环结构(斗之气八段)
斗破C++编程入门系列之七:自定义数据类型(斗之气八段)
斗破C++编程入门系列之八:函数的定义与调用(斗之气八段)
斗破C++编程入门系列之九:函数重载与模板函数(斗之气九段)
斗破C++编程入门系列之十:类与对象:类的声明、成员的访问控制和对象(二星斗者)
斗破C++编程入门系列之十一:类与对象:构造函数和析构函数(四星斗者)
斗破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++:类与对象:C++程序设计必知:作用域和可见性(六星斗者)

鸡啄米大神讲的很详细,这里我们为初学者缩减一个版本。
作用域要进行划分,那一定要通过一种符号来告诉我们,这种符号就是“{…}”(大括号)。我们发现无论是类、函数,还有命名空间,他们定义自己空间时都是使用的“{…}”(大括号)。如下:

结构体

struct Monster{QString name; //名字int level;    //斗之气等级
};

//斗技类
class Skill {
public:QString name; //斗技名称
};

函数

template <typename T>
void level_up(T & anyone){//斗气等级提升anyone.level = anyone.level + 1;
}

命名空间

namespace 斗气大陆{Person xiaoyan;Person xuner;
}

如果程序里所有变量名称都不同,那没有必要考虑作用域和可见性的问题,之所以要考虑作用域和可见性,是因为有时我们使用到了相同的变量名时,如何让二者之间的不产生冲突。

int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();//指定模版类型Person<double> xiaoyan("xiaoyan",17,8); //萧炎{//加了大括号之后,都是xiaoyan,但是不冲突,//括号内的xiaoyan与括号外的无关系Person<double> xiaoyan("xiaoyan2",18,9); //萧炎}
}

关于类空间,一个类内部所有的变量和函数都是在同一个空间内,所以相互可见,比如Person类,但是相对于另外一个类,比如Skill类,Person只能看见Skill类空间中public属性的变量和函数,而看不到Skill类的私有信息。如果想看到Skill的私有类型信息,要通过通过Skill的public属性的成员函数,或者将私有类型改为public属性,代码如下:

//斗技类
class Skill {public:QString name; //斗技名称private://私有类型,其他类看不到QString type; //类型 天 地 玄 黄//私有类型int level //斗技等级,上、中、下
public//开放给其他类的信息接口
QString getType(){return type;
}};//定义人的类型,有使用成员函数,则定义为class
template <typename T>
class Person{//析构函数
public:~Person(){qDebug() << name << "的空间准备被释放掉";}public://自定义的构造函数Person(QString name, int age, int level){if(name == "xioayan"){qDebug() << "开始创建萧炎";}else if(name == "xuner"){qDebug() << "开始创建熏儿";}else{qDebug() << "开始创建" << name;}this->name = name;this->age = age;this->level = level;}public:QString name; //名字int age;      //年龄T level;    //斗之气等级//斗技Skill skill;public://成员函数template <typename T>bool fight(Monster monster){qDebug() << "monster level" << monster.level;if(this->level > monster.level){return true;}else{return false;}}};

通过大括号构建的类空间,实现了类与类之间的数据隔离,通过Public属性又可以方便类之间信息的沟通。

三、英语:

先看几个单词:

  • space 空间
  • isolate 使…隔离
  • contact 联系
  • visibility 可见性

再看几个句子:

  • Can(吗?) Xiao Yan (萧炎)survive(生还) under (在…下面)the(这个) cliff(悬崖)?
  • 萧炎能否崖下求生?

under … 在…下面
under the desk 在桌子下面
under the ground 在地面下面(在地下)


http://www.ppmy.cn/devtools/99288.html

相关文章

12、深入解析阻塞队列BlockingQueue

深入解析阻塞队列BlockingQueue 阻塞队列介绍队列Queue接口阻塞队列应用场景 JUC包下的阻塞队列 ArrayBlockingQueueArrayBlockingQueue使用ArrayBlockingQueue的原理数据结构入队put方法为什么ArrayBlockingQueue对数组操作要设计成双指针&#xff1f;出队take方法 LinkedBloc…

自动操作一键数据恢复/电子取证

对磁盘模拟扫描修复丢失数据的实验。 先挂载题目磁盘VHD。 Windows系统中打开磁盘管理&#xff0c;-操作&#xff0c;-附加VHD 可以看到已经加载出题目磁盘&#xff0c;接下来打开RStudio数据恢复软件&#xff0c;对其进行扫描。 操作找回丢失/被删除的数据 可以看到已经加载出…

C++ 编译和运行的过程中文件的扩展名

在 C 编译和运行的过程中&#xff0c;文件的扩展名会随着每个步骤的进展而发生变化。以下是一个典型的 C 编译和运行过程&#xff0c;以及每一步中文件扩展名的变化&#xff1a; 1. 源代码文件&#xff08;.cpp 或 .h&#xff09; 源代码文件: C 源代码文件通常以 .cpp 作为扩…

Windows:Node.js下载与安装教程

1、进入nodejs官网&#xff1a;https://nodejs.org/en 2、配置系统参数 3、运行cmd&#xff0c;输入 node -v 出现安装版本即安装成功

前端性能优化:构建快速且流畅的Web体验

前端性能优化&#xff1a;构建快速且流畅的Web体验 在现代Web开发中&#xff0c;性能优化是提升用户体验的关键因素之一。随着网络环境的变化和用户需求的增长&#xff0c;如何让Web应用在各种设备上快速加载并流畅运行变得尤为重要。本文将深入探讨前端性能优化的各种技术和策…

【设计模式】工厂模式和抽象工厂模式

工厂模式 function User(role, pages) {this.role role;this.pages pages; }// new User(admin, [home, user, setting]); // new User(user, [home, user]); // new User(guest, [home]);function UserFactory(role) {switch (role) {case admin:return new User(role, [ho…

云计算实训32——roles基本用法、使用剧本安装nginx、使用roles实现lnmp

一、安装nginx并更改其端口 编辑hosts配置文件 [rootmo ~]# vim /etc/ansible/hosts 创建目录 [rootmo ~]# mkdir /etc/ansible/playbook 编辑配置文件 [rootmo ~]# vim /etc/ansible/playbook/nginx.yml 执行测试 [rootmo ~]# ansible-playbook /etc/ansible/playbook/n…

美国高防服务器到底怎么选

美国高防服务器因其强大的硬件设施、高度的网络连接性、丰富的带宽资源和先进的防御技术而受到全球用户的欢迎。以下是选择美国高防服务器时需要考虑的关键因素&#xff0c;rak部落为您整理发布美国高防服务器到底怎么选。 确定服务器需求 容量和带宽&#xff1a;根据业务规模…