-
1.
const
< br>用于定义常量,定义时必须进行初始化,一经定义不能修
改。
2.
const
用作函数参数:
1
)
指针参数:
const
在
*
的左边,表示该指针的数据不能改变,但是地址可以改变。
例如:
void fun(const int
*p)
{
*p = 10;
//
非法
,不能改变指针
p
的数据
int num(20);
p =
#
//
合法,可以改变
p
指向的地址,同时改变了
p
的数
据,此时
*p =
20
}
const
在
*
的右边,表示该指针的地址不能改变,但是数据可以改变。
例如:
void fun(int * const
p)
{
*p = 10;
//
合法
,改变了指针
p
的数据
int num(20);
p =
#
//
非法,不能改变
p
指向的地址
}
2
)
引用参数:
const
作为引用参数时,只可以将其值赋给其他变量,不能修改其数值。
例如:
void fun(const int
&p)
{
int i;
i = p;
//
合法,将
p
的数值赋给了变量
i
p = 10;
//
非法,不能改变
p
的数值
}
3.
const
用作类的成员函数
1
)
const
修饰类的成员函数时,必须写在函数的后面。
例如:
class Test;
void Test::fun(void) const
<
/p>
2
)
const
成员函数可以调用类中
const
成员函数,不能调用非
const
成员函
数。
例如:
void
Test::gun(void);
void
Test::hun(void) const
void
Test::fun(void) const
{
gun( );
p>
//
非法,不能调用非
const
成员函数
hun( );
p>
//
合法,可以调用
const
成员函数
}
3
)
const
对象可以调用类中
const
成员函数,但是不能调用非<
/p>
const
成员函
数。
< br>
例如:
void
Test::gun(void);
void
Test::fun(void) const;
Test
A;
( )
//<
/p>
非法,不能调用非
const
成员函数<
/p>
( );
//
合法
,可以调用
const
成员函数
4
)类中非
const
对象和非
const
成员函数都可以
调用
const
成员函数。
例如:
void
Test::fun(void) const;
void
Test::gun(void)
{
Fun( );
//
合法,可以调用
const
成员函数
}
Test
A;
( );
//<
/p>
合法,可以调用
const
成员函数
p>
5
)总结:类的对象和成员函数之间调用
关系作如下表格。
对象调用成员函数
成员函数调用成员函数
对象
成员函数
合法
/
非法
调用者
被调用者
合法
/
非法
const
const
合法
const
const
合法
const
non-
const
非法
const
non-
const
非法
non-const
const
合法
non-
const
const
合法
non-
const
non-const
合法
non-
const
non-const
合法
4.
const
用作函数的返回值
const
用作函数的返回值时,必须写在函数的前面。表示
函数的返回值不能
被修改。
例如:
const int fun(int
i);
该函数返回了一个整形值,这个值不能被修改。
const
给人的第一印象就是定义常量。
(1)const
用于定义常量。
例如:
const int N =
100;const int M = 200;
这样程序中只要用到
N
、
M
就分
别代表为整型
100
、
200
,
N
、
M
为一常量,在程序中不可改
变。
p>
但有人说他编程时从来不用
const
定义
常量。我相信。但他是不懂得真正的编程艺术,用
const
定
义常量不仅能方便我们编程而且能提高程序的清晰性。你是愿意看到程序中
100
、
200
满天
飞,
还是愿意只看到简单清晰的
N
、
M
p>
。相信有没有好处你慢慢体会。
还有人说他不用
const
定义常量,他用<
/p>
#define
宏定义常量。可以。但不知道你有没有发现有时<
/p>
#define
宏并没有如你所愿在定义常量。下面我们比较比较
const
和
#define
。
1
。
const
定义常量是有数据类型的,而
#defi
ne
宏定义常量却没有。
这样
const
定义的常量编译器可以对其进行数据静态类型安全检查,而
#define
宏定义的常量却
只是进
行简单的字符替换,没有类型安全检查,且有时还会产生边际效应
(
不如你愿处
)
。所谓边
-
-
-
-
-
-
-
-
-
上一篇:初中英语翻译题最新
下一篇:【英语】中考英语书面表达