注册 登录
编程论坛 C++教室

const的有关问题

子楠 发布于 2013-04-11 21:15, 848 次点击
为什么再定义有些成员函数的时候参数类型还要加const;
例:void student(const int n);
这有什么作用;
什么时候该用,什么时候不该用。。。。。
求指导
14 回复
#2
邓士林2013-04-11 21:44
void student(const int n);这个定义的意思就是n是常变量,不能被修改的,当你不希望函数中修改实参的值时就可以把参数定义为常变量,
#3
peach54602013-04-11 22:19
简单说就是不能被修改
比如说void display(const cstring &str)
又可以提高性能又可以保证不修改
#4
lz10919149992013-04-11 22:26
有些对象不能被赋值,则const T &的用处就到了。
#5
zhuxiaoneng2013-04-12 02:52
void student(const int n);基本不会这么用,因为是按值传递,本来就已经拷贝了一份
一般是对于引用类型,会加const修饰,表示不希望传入的值,在函数内部被改变
#6
子楠2013-04-12 15:58
回复 5楼 zhuxiaoneng
恩呢,明白一点,还能再具体嘛
#7
peach54602013-04-12 16:23
以下是引用子楠在2013-4-12 15:58:45的发言:

恩呢,明白一点,还能再具体嘛

你知道形参和实参是什么概念吗?
知道引用类型和值类型分别是什么概念吗?
#8
apull2013-04-12 18:16
加了 const 的变量是只读的,不允许被修改。
#9
子楠2013-04-12 20:41
以下是引用peach5460在2013-4-12 16:23:02的发言:


你知道形参和实参是什么概念吗?
知道引用类型和值类型分别是什么概念吗?

传地址和传值:
#10
子楠2013-04-12 20:51
明白
#11
peach54602013-04-12 20:53
以下是引用子楠在2013-4-12 20:51:29的发言:

明白

明白的话,那我问你
如果对象作为参数传递,不传引用会怎么样?
#12
子楠2013-04-13 12:26
[quote]以下是引用peach5460在2013-4-12 20:53:02的发言:


明白的话,那我问你
如果对象作为参数传递,不传引用会怎么样?
还要调用复制构造函数,把这个对象给到一个临时对象吧,引用则不需直接传
应该是这样吧
#13
peach54602013-04-13 14:23
以下是引用子楠在2013-4-13 12:26:27的发言:

[quote]以下是引用peach5460在2013-4-12 20:53:02的发言:


明白的话,那我问你
如果对象作为参数传递,不传引用会怎么样?
还要调用复制构造函数,把这个对象给到一个临时对象吧,引用则不需直接传
应该是这样吧


呵呵,那你明白传引用的好处了吧
#14
子楠2013-04-13 18:24
以下是引用peach5460在2013-4-13 14:23:59的发言:



呵呵,那你明白传引用的好处了吧

恩呢,明白了,
#15
peach54602013-04-13 18:29
以下是引用子楠在2013-4-13 18:24:55的发言:

 
恩呢,明白了,

好,回到你的问题
如果我为了性能,也就是为了不使用对象拷贝而传递了引用
但是我又不希望调用的子函数对我的对象做任何修改,怎么办?
1