C++常函数问题请教我前几天看了一个网上关于C++的资料,今日上上不去了,有个问题当时一知半解,由于没有原题,现在写出大意,请大家指点:
一个函数定义后边加一个const,我不知道加这个参数对为函数有什么影响?下边我试写一个,也许语法有问题,关键我当时有事,没有认真看原文,请大家谅解:int p(int a) const 这样的函数体内什么参数不能被修改?const的意义何在,谢谢了。
一个函数定义后边加一个const,我不知道加这个参数对为函数有什么影响?下边我试写一个,也许语法有问题,关键我当时有事,没有认真看原文,请大家谅解:int p(int a) const 这样的函数体内什么参数不能被修改?const的意义何在,谢谢了。
解决方案 »
- connect接收的SOCKADDR结构如何同步?
- 关于路由器登陆须输入用户名密码的问题
- 在关掉主界面点击右上角的叉时,怎样使之弹出一个提示对话框啊?
- ActiveX控件的测试
- 毕业了!散点分!感谢各位在本人毕设过程中的解答。
- 建议有分。。电梯控制面板功能模拟系统
- 为什么我的程序在DEBUG 下能通过,REALSE通不过?
- vc中如何调用chm的帮助文件
- 关于MFC编译链接的问题
- 请问怎样用vc程序在view窗口上画一个点?
- 高难度动作:webbrowse控件加载一个页面,弹出下载文件对话框,我如何用程序控制:接受下载呢!
- 请教针对日志钩子在按下ctrl+alt+del后自动取消挂钩的问题的解决办法~~
它会告诉编译器:帮我看着a这个参数,它是不能在函数内被修改的,如果它要被修改,吱个声;
同时告诉这个方法的使用者:在p方法内部,我可以保证a是不会被修改的,兄弟你可以放心用它!
比如说你在类A里面定义了一个这种函数,那么在这个函数的实现过程中不可以修改
函数的参数的值以及类A里面的成员变量的值,如果修改的话,会报错的
我想问在类里边有成员int b,c d;如果int p(int a) const是类里边的函数,那么P就不能修改a\b\c\d中的任意一个对吗?
class tt
{
pbulic:
int b,c,d;
int p(int a) const;
}
http://community.csdn.net/Expert/topic/3489/3489195.xml?temp=.8393061
这是我的两个新问题,请高手指点。
int const *a; file://a可变,*a不可变
int *const a; file://a不可变,*a可变 分析:const 是一个左结合的类型修饰符,它与其左侧的类型修饰符和为一个类型修饰符,所以,int const 限定 *a,不限定a。int *const 限定a,不限定*a。 2.const 限定函数的传递值参数: void fun(const int var); 分析:上述写法限定参数在函数体中不可被改变。由值传递的特点可知,var在函数体中的改变不会影响到函数外部。所以,此限定与函数的使用者无关,仅与函数的编写者有关。
结论:最好在函数的内部进行限定,对外部调用者屏蔽,以免引起困惑。如可改写如下: void fun(int var){
const int & varalias = var; varalias .... ..... } 3.const 限定函数的值型返回值: const int fun1(); const myclass fun2(); 分析:上述写法限定函数的返回值不可被更新,当函数返回内部的类型时(如fun1),已经是一个数值,当然不可被赋值更新,所以,此时const无意义,最好去掉,以免困惑。当函数返回自定义的类型时(如fun2),这个类型仍然包含可以被赋值的变量成员,所以,此时有意义。 4. 传递与返回地址: 此种情况最为常见,由地址变量的特点可知,适当使用const,意义昭然。 5. const 限定类的成员函数: class classname { public: int fun() const; ..... } 注意:采用此种const 后置的形式是一种规定,亦为了不引起混淆。在此函数的声明中和定义中均要使用const,因为const已经成为类型信息的一部分。 获得能力:可以操作常量对象。 失去能力:不能修改类的数据成员,不能在函数中调用其他不是const的函数。转载自:http://www.chinaunix.net/jh/23/143183.html