C++编程基础学习第二课

Posted 吉林师大计算机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程基础学习第二课相关的知识,希望对你有一定的参考价值。

HELLO  WORLD
C++编程基础学习第二课
C++编程基础学习第二课
C++编程基础
C++编程基础学习第二课

       上一次我们已经介绍了C++的发展历史和应用领域。

    这一次我们将一起学习C++特有的bool类型和namespace命名空间。

C++编程基础学习第二课
bool类型

C++编程基础学习第二课

      布尔类型(bool)是C++新增的一种基本数据类型。

在标准的C语言中并未定义bool 类型。如果要使用bool类型需要通过宏定义来自定义一个bool类型,定义语句如下:




#define bool int 

#define   false  0  
#define   true  1

    其本质就是将 int 定义为 bool 型,将 int 型的 1和0两个值分别定义为bool类型的true和false。

    但是C++中不需要这这么麻烦,C++对bool类型早已做出了定义。

    bool类型是C++的基本数据结构之一,在80x86处理器上编译gcc 4.8.1和Visual C++2012给bool类型变量分配1个字节长度。bool类型也只有两个值true,false。在逻辑运算时,默认非零即为true。

    定义bool类型的变量也与其他基本数据类型的定义类似,如下所示:




bool flag = true;


命名空间

C++编程基础学习第二课

C++语言引入命名空间(namespace)这一概念主要为了避免命名冲突,其关键字为namespace。

在程序开发的过程中,有一个系统都不会仅由一个人来开发完成,不同的人开发同一个系统,不可避免地出现变量或函数的命名冲突,当所有人的代码测试通过,没有问题时,将所有人的代码结合到一起,因为变量或函数重名而导致的问题会造成一定的混




int flag = 1; //小张声明的变量

// .....中间若干段代码

bool flag = true; //小尹声明的变量


注意:此例仅为解释命名空间所用,在公司的系统开发中并非如此中所述,完全仅靠命名空间来解决命名冲突的,具体编程规范可以参考林锐的《高质量程序设计指南》一书。


    如上所述,因个人的习惯不同,小张喜欢 声明int 型变量来用于逻辑判断,而小尹则更喜欢采用bool类型变量。但是,两个声明放到同一个函数中的时候,很明显编译器会提示出flag变量重新定义的错误。这种问题若不加以处理时无法通过编译的。

    可以使用命名空间来解决这个问题,如下所述:




namespace Zhang

{
     int  flag  =  1;
}
namespace Yin
{
     bool  flag  =  true;
}

    小张与小尹各自定义了以自己姓氏为名的命名空间,此时将小张与小尹的flag变量定义再置于同一个函数体中,则不会有任何问题,当然在使用这两个变量的时候需要指明所采用的是哪一个命名空间中的flag变量。

    指定所使用的变量时需要用到“::”操作符,“::”操作符是域解析操作符。例如:




Zhang::flag = 0;   

//使用小张定义的变量flag

Yin::flag = false; 

//使用小尹定义的变量flag

    我们已经定义了两个命名空间 Zhang和 Yin,并在其中各自声明flag变量,使用的时候则需要分别用域解析操作符指明此时用的flag变量是谁定义出来的flag变量,是小张还是小尹定义的。

    除了直接使用域解析操作符,还可以采用using声明(using declaration),例如:




using Zhang::flag;

flag = 0;          

//使用小张定义的变量flag

Yin:: flag  =  false
// 使用小尹定义的变量flag

    在代码的开头用using声明了Zhang::flag,其含义是using声明以后的程序中如果出现未指明的flag时,则使用Zhang::flag,但是若要使用小尹定义的flag,则仍需要Yin::flag。

    using声明不仅仅可以针对命名空间中的一个变量,也可以用于声明整个命名空间,例如:




using namespace Zhang;

flag = 0;          

// 使用小张定义的变量flag
Yin:: flag  =  false
// 使用小尹定义的变量flag

    如果命名空间Zhang中还定义了其他的变量,则同样具有flag变量的效果,在using声明后,若出现未具体指定命名空间的命名冲突变量,则默认采用Zhang命名空间中的变量。

    命名空间内部不仅可以声明或定义变量,对于其它能在命名空间以外声明或定义的实体,同样也都能在命名空间内部进行声明或定义,例如变量的声明或定义、函数的声明或定义、typedef等都可以出现在命名空间中。

    下面我们来看一个简单的C++程序的示例:




#include <iostream>

using  namespace std;
int  main()
{
   cout  <<  " hello world! "  <<  endl;
   return  0;

}

    这是一个简单的C++程序hello world示例,在程序中采用了using声明命名空间std,using namespace std; 这一语句涵盖了std命名空间中的所有标识符,而该命名空间包含C++所有标准库。头文件iostream文件中定义的所有变量、函数等都位于std命名空间中,每次使用iostream中的变量或函数都需要在前面加上std::是非常麻烦的一件事,为此可直接用using声明将std中的所有变量或函数等都声明出来。

    如果不用using namespace std;这一语句,则程序应该像下面这样:


#include <iostream>

int main()

{

 std::cout<< "hello world<< std::endl;

 return 0;

}

    这样看起来是相当麻烦的,如果在某次使用iostream中变量或函数时漏掉std则会导致为定义标识符错误。

    C++语言是以C语言为基础的,它继承了所有的C语言函数库,但C++对这些标准库都重新命名了。标准C头文件(如math.h)重命名为 cmath,去掉头文件的.h,并在前面加上c。因此在C++中如需使用 math.h 头文件,则可以按照如下方式使用。




#include <cmath>

using namespace std;



C++编程基础学习第二课

        “千里之行,始于足下。”

    下面我们将继续介绍C++的基本语法。希望能帮助大家更熟练的掌握C++。

C++编程基础学习第二课
C++编程基础学习第二课
扫码关注师大计算机



以上是关于C++编程基础学习第二课的主要内容,如果未能解决你的问题,请参考以下文章

《Python基础教程》学习的第二课0120

0元学Scratch趣味编程第二课:绘制等边三角形(附送8例Scratch基础编程带注释源代码)

scrapy学习第二课

Python 基础 2022 最新第二课 变量 & 数据类型

Python 基础 2022 最新第二课 变量 & 数据类型

Python 基础 2022 最新第二课 变量 & 数据类型