⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 编程技巧 常量const的使用(编译自topica).txt

📁 C&C++论坛精华
💻 TXT
字号:
作者:rick1126
email: rickzhang@sina.com.cn
日期:2001-4-13 6:27:23
CONST AND PASS-BY-VALUE 
使用一个常量前缀(const)可以避免传址变量的修改: 

void f(const string & s); 

一些开发者即使针对传值变量也用 const : 

void f(const int n); /*n is passed by value, why const?*/ 

const 是否真的必要? 不, 不需要. 记住, 在你使用传值变量的时候, 调用函数不会修改变量值而仅仅复制它. 进一步讲, 根据 C++ 标准, Top-level cv-qualification 前缀是被忽略的. 让我们解释这个术语: "cv-qualification" 指常量和非稳定. "Top-level" 意味着参数不是一个组合或者非完整的类型, 比如: 不是指针, 引用或者数组. 这样:

void f(int const param1); 

还是作为下列方式对待: 

void f(int param1); 

为此, 传递一个类型为 'const int' 类型的参数给 void f(int param1); 是允许的: 

void f(int n); /*non-const parameter*/
int main()
{
f(1); /*const int; fine*/
} 

相反, 下列对于常量的使用则有影响: 

void f(int *p1);
void f(const int *p2); 

这里, 常量被用于一个组合类型, 称之为 int *. 这样, 不能传递类型为"一个指向常量整数的指针" 给第一个函数 f().

void f(int *p1); /*non const version*/
int n=0;
const int *p=&n;
f(p); /*error, cannot convert 'const int *' to 'int *'*/ 

作为一个规则, 如果变量以传值方式传递或者返回不能声明为常量, 只有针对组合类型使用常量类型. 
-----------
Danny Kalev 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -