标签:class 编译 ons pointer turn 没有 code 编译器 效率
#include<stdlib.h> #include<iostream> int MAX(const int a, const int b); /* * const限定符: * 1. 定义:限定一个变量不允许被改变,产生静态作用 * 2. 分类: * (1) 顶层const:限定变量本身不可改变 * 例: const int number; * int *const pointer; * * (2) 底层const:限定变量所指向的对象不可改变,所有的引用都是底层const * 例: const int *pointer; * const int "ation; * 3. 用法: * (1) 定义常量 * * (2) 保护被修饰的东西 * * (3) 很方便的进行参数的调整和修改 * * (4) 为函数重载提供了一个参考 (***) * * (5) 节省空间,避免不必要的内存分配 * const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝 * * (6) 提高效率 * 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高 */ int main() { /* * 1. 定义:限定一个变量不允许被改变,产生静态作用 * 2. 分类: * (1) 顶层const:限定变量本身不可改变 * (2) 底层const:限定变量所指向的对象不可改变,所有的引用都是底层const */ const int num_1 = 10; //num_1 = 20; //错误:num_first 被const 修饰,不可改变 const int *num_pointer_1 = &num_1; num_pointer_1 += 8; //正确:底层const ,限定指针所指的变量不可变 std::cout << num_pointer_1 << *num_pointer_1 << std::endl; const int &num_reference = num_1; //num_reference = 20; //错误:使用const 修饰引用变量时,都是底层const std::cout << std::endl; std::cout << std::endl; /* * 3.用法: * (2) 便于进行类型检查(与宏进行比较) */ int num_3_1 = 12; int num_3_2 = 32; std::cout << "MAX(num_3_1, num_3_2) = " << MAX(num_3_1, num_3_2) << std::endl; std::cout << "MAX(NUM_DE_1, NUM_DE_1) = " << MAX(NUM_DE_1, NUM_DE_1) << std::endl; } int MAX(const int a, const int b) { return a > b ? a : b; }
标签:class 编译 ons pointer turn 没有 code 编译器 效率
原文地址:http://www.cnblogs.com/QingKeZhiXia/p/7127270.html