| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1073 人关注过本帖
标题:我又来求助了:涉及到的知识:泛型编程,模板类,操作符重载,代码和问题在帖子里 ...
只看楼主 加入收藏
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 10楼 纯黑色

const属性会传染
比如A(const int n)
{
B(n);
}
那么这个n传下去的时候,也要是B也要是(const int n)

而且...假设不是值类型,是对象
比如A(const object& n)
{
n.test();
}
那么,这个test函数你必须是const的

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 16:35
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 7楼 rjsp
const 写在函数名前面任何位置都不能编译,写在括号后面就可以正常运行,能帮我分析一下吗?拜谢.
2013-08-05 16:40
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 12楼 纯黑色
那你知道写在前面和写在后面分别是什么意思吗?
如果你不知道,你为什么要问我呢,去看看书,看书上是怎么写的...

我给你个答案,你扭头就忘了...
你自己苦过,就会记得深刻了...
我只能引导你...

[ 本帖最后由 peach5460 于 2013-8-5 16:46 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 16:43
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 13楼 peach5460
我问了半天goole,没有找到任何相对应的资料,但是看了很多关于const的介绍:
我的理解是这样的:
    通过const 修饰的变量,函数,类,类的成员函数都是不能被修改的。
举个例子:
    const int a;//a这个变量不能被修改.
    const int *a;(等价于int const *a)//a指针指向的变量不能修改.
    int *const a;//a指针的指向不能被修改.
    const int function(){}//function返回的值不能被修改.
    int function() const{}//funtion函数体里面的所有变量,函数,类都不能被修改.

因此当用const 实例化一个类的对象后,这个类的所有方法和属性都不能再被改变了.
所以类里面的非const修饰的函数体都会discard 掉.

不知道我这样理解正确吗?还望指出.

[ 本帖最后由 纯黑色 于 2013-8-5 17:15 编辑 ]
2013-08-05 17:07
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 13楼 peach5460
您说的对啊,我深有感触,所以我现在每学一个知识点都会写一段验证代码.
2013-08-05 17:08
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
const int function(){}//function返回的值不能被修改.
    int function() const{}//funtion函数体里面的所有变量,函数,类都不能被修改.

你这个例子,涉及到这两个
const在前面,表示返回值是const
const在后面表示,在函数调用过程中不能改变成员变量的值

说回我的例子
比如A(const object& n)
{
n.test();
}
那么,这个test函数你必须是const的

这里,你的对象n是const的
所以
test必须是void text () const
这样,两个const呼应才对

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-05 17:17
纯黑色
Rank: 1
等 级:新手上路
帖 子:347
专家分:0
注 册:2009-4-16
收藏
得分:0 
回复 16楼 peach5460
这样就通了,如果const 实例化一个类的对象的话,这个对象可以用的方法以及属性,必须是在这个类定义的时候用const修饰过的,否则的话就不能使用.

恍然大悟啊.
2013-08-05 17:37
快速回复:我又来求助了:涉及到的知识:泛型编程,模板类,操作符重载,代码和问题在 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020256 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved