void fun() const{}; const void fun(){}; 和void const fun(){};
程序员文章站
2022-07-09 21:46:49
...
转: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;
}
上一篇: C语言关键字之const
下一篇: Java后端笔记11