关于const的一点小问题~~~~~~

jyy243270803 2010-09-20 10:36:53
const vector<int>* fibon_seq(int size)
{
省略
}

问题(1)这里的const是什么意思呢,是表示函数返回一个const vector<int>的对象的指针吗?可是这里有个问题既然是定义const vector,那么这个里面的元素就不能改变了,可是这个函数却向其中增加了元素。

问题(2)普通函数前加const,表示什么呢?


请各位看清问题,不要答不对题啊!!!!!!!!!!!!!!!!!!!
...全文
148 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cruxsky 2010-09-21
  • 打赏
  • 举报
回复
就是!

[Quote=引用楼主 jyy243270803 的回复:]
const vector<int>* fibon_seq(int size)
{
省略
}

问题(1)这里的const是什么意思呢,是表示函数返回一个const vector<int>的对象的指针吗?可是这里有个问题既然是定义const vector,那么这个里面的元素就不能改变了,可是这个函数却向其中增加了元素。

问题(2)普通函数前加const,表示什么呢?


请各……
[/Quote]
cheng_fengming 2010-09-21
  • 打赏
  • 举报
回复
const char* Buffer = "Hello"; //指针所指向的内容是不可以修改的
char* const Buffer = "Hello"; //指针本身是不可以修改的
const char* const Buffer = "Hello"; //指针本身和所指向的内容都不可以修改
liyaobinRyan 2010-09-21
  • 打赏
  • 举报
回复
const代表些数值为常量,不可以改变。
GARY 2010-09-21
  • 打赏
  • 举报
回复
“可是这里有个问题既然是定义const vector,
那么这个里面的元素就不能改变了,可是这个函数
却向其中增加了元素。”

const vector<int>*
这里的const表明,不允许去修改所返回的
vector<int>*指针所指向的对象。修饰的是返回类型,
不会影响函数体内的操作。

嗯。顶5楼。
hanmeizhi 2010-09-21
  • 打赏
  • 举报
回复
5楼回答的很好
genlic 2010-09-21
  • 打赏
  • 举报
回复
只是返回值。
pengzhixi 2010-09-21
  • 打赏
  • 举报
回复
const vector<int>* fibon_seq(int size)
{
省略
}

问题(1)这里的const是什么意思呢,是表示函数返回一个const vector<int>的对象的指针吗?可是这里有个问题既然是定义const vector,那么这个里面的元素就不能改变了,可是这个函数却向其中增加了元素。

不要修改返回指针所指对象。是说返回以后这个对象不应该再被修改,在这个函数里面修改是可以的。

问题(2)普通函数前加const,表示什么呢?
就是修饰返回值的。
Howard-Lu 2010-09-20
  • 打赏
  • 举报
回复
阿姜加油~~~

帮顶,求高手
zyrr159487 2010-09-20
  • 打赏
  • 举报
回复
意思就是那个指针类型的返回值的地址是无法修改的
gules 2010-09-20
  • 打赏
  • 举报
回复
问题2一楼已回答。
关于问题1,返回一个指向常量对象的指针与在函数体内修改这个对象没有冲突,也就是说,在函数体内填充好值后将其对象的地址返回,函数体后不可通过该地址来修改对象的值。(从楼主的函数参数看,要小心返回的指针为失效的)
昵称很不好取 2010-09-20
  • 打赏
  • 举报
回复
前面加const,一般修饰的都是返回值

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧