大学课堂C++知识点(第三期)

const修饰符

我们在C中,往往会使用   #define  来定义常量,比方说:

# define ABC=100

这个呢,就是在后面的程序中,反正有 ABC 这个标识符的,都用100来代替了。

然鹅,在预编译

{

          ps: 预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定           义的替换,条件编译

}

之后,程序中就不再有  ABC 这个标识符了。 因为  ABC  不是变量,没有类型,不占用存储单元,所以容易出错。

那么,C++ 中,就用  const    修饰符来定义常量。

for example:

const   int   ABC=100;

这个常量ABC是有类型,占用存储单元,有地址,可以用指针指向它,虽然不能修改。

其实 const 和  # define  的作用相似,但是在C++ 中,它消除了不安全性。比方说:

#include <iostream>
using namespace std;
int main()
{
    int a=1;
    #define   T1  a+a
    #define   T2  T1-T1
    cout << "T2  is  "<< T2 <<endl;
    return 0;
}

从这个初看,似乎输出:

                                T2   is    0

但是,答案显然是错误的,在CB上运行为:

                               T2  is  2

原因就是C++ 把 第七行语句解释为了:

               cout << "T2  is  "<<  a+a- a+a <<endl;

假如我们用 const 取代:

#include <iostream>
using namespace std;
int main()
{
    int a=1;
    const   T1  a+a
    const   T2  T1-T1
    cout << "T2  is  "<< T2 <<endl;
    return 0;
}

运行结果为:

所以,符合我们所期待的结果。

发布了19 篇原创文章 · 获赞 9 · 访问量 7450

猜你喜欢

转载自blog.csdn.net/Cryu_xuan/article/details/83092707