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

斗破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 在地面下面(在地下)

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可峰科技

生活不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值