void fun() const{}; const void fun(){}; 和void const fun(){};
程序员文章站
2022-07-14 09:29:55
...
转:http://blog.csdn.net/zimingjushi/article/details/6716269
(0 0) +-----oOO----(_)----------+ | | | | | | +------------------oOO----+ |__|__| || || ooO Ooo
const void fun(){};和void const fun(){};两个相同。
如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(即地址)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
如果采用"按值传递方式"的函数返回值加const 修饰,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。
所以不要尽量不要把int fun2();写成const int fun2(); 因为没意义。例:
#include<iostream> using namespace std; int num = 10;//全局变量 const int *fun1() { return #//返回地址 } const int fun2()//按值传递,最后写成int fun2() { return num; } int main() { const int *fun1(); //int *t1 = fun2();//错误,必须是const型 const int *t1 = fun1(); //*t1 = 20;//按址传递,不能修改其只想变量或常量的值 cout << "const int *fun1() : \t" << *t1 << endl; const int fun2();//最好直接声明成int fun2() int t2 = fun2();//非const变量可以更改函数返回值 const int t3 = fun2(); t2 += 10;//按值传递,可以修改返回值 cout << "const int fun2() :\t" << t2 <<endl; return 0; }
void fun() const{};
类的成员函数后面加 const,表明这个函数不可以对这个类对象的数据成员(准确地说是非static数据成员)作任何改变例:
#include<iostream> using namespace std; class R { private: int num1; static int num2; public: R():num1(1) {} int sum1(int a)const { return a + num1; //num1 = 10,错误,不可以修改非static数据成员 } int sum2(int a)const { num2 = 2;//正确,可以修改sattic数据成员 return a + num2; } int sum3(int a) { num1 = 10;//正确,修改非static数据成员 num2 = 20;//正确,修改sattic数据成员 return a + num1 + num2; } }; int R::num2 = 0; int main() { R t; cout << "t.sum1(1):\t" << t.sum1(1) << endl; cout << "t.sum2(1):\t" << t.sum2(1) << endl; cout << "t.sum3(1):\t" << t.sum3(1) << endl; }
上一篇: js事件捕获冒泡