C++之const
来源:互联网 发布:导航触摸屏校正软件 编辑:程序博客网 时间:2024/06/06 04:46
const与define的比较
之前在学习C语言的过程中便听说过const要优于define,所以专门去查了一下const的优点,总结如下:
1.define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。
2.define宏没有类型,而const修饰的只读变量具有特定的类型。
3.define宏并不会为常量分配内存,而常量可以。
由于存在上述两个特点,编译器对define的变量只是简单进行替换,但是const类型的常量有类型,编译器会进行类型检查所以更安全,更准确。
下面一个例子便可以看出const和define的区别
#include<iostream>#define a 7+7int main(){ const int b = 7 + 7; int c; c = a * a; std::cout << "define--" << c << "\n"; c = b * b; std::cout << "const--" << c << "\n"; getchar(); return 0;}
const修饰函数参数,函数返回值,作为后缀修饰成员函数
- void myfun(const int *i);
在函数内部任何修改*i的值都是不合法的,const尤其是在传入指针类型变量的时候很好保护原值不被修改。 - const int myfun();
此处返回const值, 意思指返回的原函数里的变量的初值不能被修改, 但是它可以被赋给任何的const或非const类型变量, 完全不需要加上这个const关键字.但这只对于内部类型而言(因为内部类型返回的肯定是一个值, 而不会返回一个变量, 不会作为左值使用), 对于用户自定义类型, 返回值是常量是非常重要的。 - void myfun()const;
在成员函数声明后面加const便限定了,在此成员函数的定义中不能对成员变量进行修改(但是可以访问),不能调用非const类型的成员函数。
阅读全文