c++中使用 const 保护数据

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:39:13
#include <iostream>
#include <string>
using namespace std;
void change(const string&); //为什么要用const string&,string后面的取地址符号表示什么意思?
void main()
{
string str("can you change it?");
change(str);
cout<<str<<endl;

}
void change(const string&s) //同上?
{string s2=s+"No!";
cout<<s2<<endl;

}
讲详细点好吗,呵呵。

为什么使用const string &?
既可以避免修改传入的参数,又可以避免参数的拷贝。

如果此函数声名的是void change(string)这样的,那么它的参数是string。这样在调用该函数时,函数将传入的参数会被拷贝一份副本,也就是说函数中实际使用的是函数的传入实参的副本。而使用string & 作为参数时可以就避免了参数的拷贝,函数中实际使用的是函数的传入参数本省,这样就可能会修改所传入的参数,因此加一个const就既可以避免修改传入的参数,又可以避免参数的拷贝。

1.在变量前加上const是为了确保在这个函数里不改变变量的值,防止误操作.
2.string&的意思是引用变量,引用的好处是没有指针的烦恼,却有类似指针的强大功能.引用是直接引用变量的地址,不用拷贝一个新对象.对于比较大的类,可以提高运行速度.

void change(const string&); 中const的意思是后面的所定义变量在函数change中不可被改变,string后面的取地址符号是指形参为string引用类型

在C++中,函数的传参基本上都是用&,在这里,它不是取地址,它不同C,而有了一个新名字---引用。但是别的地方还是跟C一样。
其它的如楼上所说……

那是引用符,只是和取地址符一样 ,传递引用可以不使用副本,而是直接只用原变量,因此可以修改原变量的值

他们给的答案够详细了,怎么还没采纳呢?