社区
新手乐园
帖子详情
请教关于函数指针和const的理解
discory
2006-03-08 10:52:37
我对这个概念还不是很明白,看了一些资料, 如说函数就是一个地址,这个能理解
但是,如int *f(), int (*f)(),这个怎么理解啊,在难点如:int *(*f)()就完全不明白了
变量指针还好,但是遇到函数指针和类指针就昏掉
还有个问题就是int f() const这句语法是什么意思,是不是函数定义成const要在把const加
在函数后面?
新手,请多多帮助哈
...全文
169
8
打赏
收藏
请教关于函数指针和const的理解
我对这个概念还不是很明白,看了一些资料, 如说函数就是一个地址,这个能理解 但是,如int *f(), int (*f)(),这个怎么理解啊,在难点如:int *(*f)()就完全不明白了 变量指针还好,但是遇到函数指针和类指针就昏掉 还有个问题就是int f() const这句语法是什么意思,是不是函数定义成const要在把const加 在函数后面? 新手,请多多帮助哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
popy007
2006-03-08
打赏
举报
回复
照几位大虾说的,int f() const是函数f()返回的直不能修改?
田sir说的接受的一定是const类型是什么意思,举个例子好吗
=====
class X {
int i;
public:
int read() { return i; }
int read2() const { return i; }
// int read3() const { ++i; return i; } 错误,不能在const方法中修改内部成员
};
const X x;
//x.read(); 错误,const对象只能使用const方法
x.read2(); // 没问题!const对象使用const方法
X x2;
x.read(); // no problem
x.read2(); // no problem
discory
2006-03-08
打赏
举报
回复
照几位大虾说的,int f() const是函数f()返回的直不能修改?
田sir说的接受的一定是const类型是什么意思,举个例子好吗
tsst
2006-03-08
打赏
举报
回复
int f() const应该是表示函数的返回值是const类型,此时返回值的接收都也一定要是const类型
megaboy
2006-03-08
打赏
举报
回复
右左法则可以帮助你阅读一个复杂的声明,关于这个法则及阅读方法可以参考我的blog的以下内容:
http://blog.csdn.net/megaboy/archive/2005/09/17/482771.aspx
piaochen_2002
2006-03-08
打赏
举报
回复
同意楼上,....
bm1408
2006-03-08
打赏
举报
回复
int *fn()
这个表示函数返回的是一个int指针
int (*fn)()这个才表示函数指针
int *(*fn)()这个表一个函数指针,这个指针指向的函数返回一个int *的指针
int fn() const;表示在函数内部不能改变量的值~!
discory
2006-03-08
打赏
举报
回复
谢谢了
ox_thedarkness
2006-03-08
打赏
举报
回复
int fn() const
这不是通常函数的声明。 等你学到类的时候会接触的,它只能用于非static的类方法声明。
他的意义在于: 如果我们有类的一个const对象(说明它是只读的),只能调用其const方法,而C++ 令const方法不能修改自己的(注意是自己的)一般成员属性,也不能调用自己的非只读方法 —— 这就保证了我们只读对象的只读性,同时提供了访问权。
例:
class A{
int _i;
public:
void seti( int i ){ _i = i; }
int geti() const{ return _i; }
};
seti是通常方法,它用来设置 A::_i 的值,所以不能声明为const(否则编译器会对 _i=i 报错)。 而 geti 是用来读取 A::_i 的值,他应当声明为const。 假如有下面的定义:
A a;
const A& ca = a;
那么我们可以读/写a, 但是只能读 ca:
a.seti( 10 );
std::cout<< a.geti() << std::endl;
// ca.seti( 20 ); // 非法! 不能对只读对象调用非只读方法
std::cout<< ca.geti() << std::endl; // OK, geti 为只读方法
[Django+Vue]基于Django框架的监控管理系统 全套源码+论文+PPT+演示视频+数据库文档
[项目介绍] 基于Python Django框架的监控管理系统,实现对监控设备、监控区域、报警信息的集中管理。包含完整的视频监控管理功能。 [技术栈] Django 2.0 + Vue.js + Element UI + MySQL 5.7 + ECharts [核心功能] 监控设备管理、监控区域管理、报警信息管理、实时监控画面展示、数据统计与分析、用户权限管理 [资源包含] 完整项目源代码、配套论文、答辩PPT、演示视频、数据库设计文档
基于Spring Boot的注册发现治理实战方案
标题:基于Spring Boot的注册发现治理实战方案 内容概要:围绕核心链路、并发控制、异常补偿与可观测性建设,说明基于Spring Boot的注册发现治理实战方案的关键实现重点。 24直播网:zgbxrt.dfxmw.cn 直播下载:www.dgliangou.com 直播下载:zuqiu.dglzy.com 24直播网:www.dgchhg.cn 直播下载:www.dghongan.cn
交通流分配-下载即用.zip
代码下载地址: https://pan.quark.cn/s/068306a56640 在交通运输科学范畴内,交通流量分配是探讨交通系统内交通负荷如何在各个道路路段间进行合理分配的核心议题。交通流分配技术主要应用于模拟和推演交通系统的运行状态,旨在为城市规划人员与交通工程师提供优化道路布局的参考,进而缓解交通拥堵现象,提升道路交通的整体效能。以下将对"交通流分配技术"进行深入阐述: 1. **全部或无分配(All-or-Nothing Distribution)** 全部或无分配是一种基础的交通流分配策略。该技术依据最短路径准则,预设所有从发源地(Origin)至目的地(Destination)的车辆都将选择路程最短的路线。倘若存在多条等长路径,则采用随机方式确定其中一条。此类方法未将交通拥堵因素纳入考量,因为一旦选定路径,便假定所有交通量将沿此路径通行,即便这可能导致部分路段出现超负荷状况。 2. **逐步分配(Progressive Assignment)** 逐步分配技术顾及了交通网络的动态特征。该算法通过逐步优化流量配置,力求使网络内行驶的总代价(诸如通行时间、距离等指标)最小化。运算过程始于初始的全部或无分配状态,随后逐步修正路径选择,直至网络达成稳定状态,即每次流量修正后,总代价的变动幅度不再明显。此方法更贴近现实交通场景,因为车辆会依据即时路况选择最优路径。 3. **迭代平均分配(Iterative Average Distribution)** 迭代平均分配是一种对逐步分配技术的优化版本,其更侧重于实现网络流量的均衡化。在每一轮迭代过程中,算法不仅评估当前路径的优化程度,同时参考前一次迭代的流量配置。通过融入平均化理念,该方法能更有效地分散交通...
【Python编程】Python API开发之RESTful与GraphQL设计
内容概要:本文深入对比RESTful与GraphQL两种API设计范式在Python中的实现,重点分析资源导向与查询导向在数据获取效率、版本控制、缓存策略上的差异。文章从HTTP方法语义(GET/POST/PUT/PATCH/DELETE)出发,详解Flask-RESTful的资源类路由映射、Marshmallow的序列化/反序列化校验、以及HATEOAS超媒体驱动的API发现机制。通过代码示例展示Graphene的Schema定义、Resolver解析函数的N+1查询问题与DataLoader批处理优化、以及GraphQL的订阅(Subscription)实时推送实现,同时介绍FastAPI的自动OpenAPI文档生成、Pydantic模型的请求体验证与响应序列化、以及REST API的版本控制策略(URL路径/请求头/内容协商),最后给出在微服务网关、移动应用后端、数据聚合层等场景下的API设计原则与性能优化建议。 直播下载:www.sjbu.org 24直播网:pro.sjbv.org 直播下载:www.sjbvip-tv.cn 24直播网:sjbzb.sjbx.org 24直播网:www.sjbvip-tv.com
【Python编程】Python代码重构与遗留代码现代化策略
内容概要:本文深入探讨Python遗留代码的渐进式重构方法,重点对比大爆炸重写与Strangler Fig模式在风险控制和业务连续性上的差异。文章从技术债务识别出发,详解代码异味(code smell)的检测指标(圈复杂度/重复率/方法长度)、自动化重构工具(rope/autopep8/black)的安全应用边界、以及特性开关(feature toggle)的灰度发布策略。通过代码示例展示提取方法(Extract Method)的函数拆分、引入参数对象(Introduce Parameter Object)的签名简化、以及以测试为安全网的重构流程(红-绿-重构),同时介绍类型注解的渐进式添加策略、Python 2到3的兼容层(six/lib2to3)迁移方案、以及单体应用向微服务的拆分原则(按业务能力/按数据边界),最后给出在大型遗留系统、关键业务模块、团队技能转型等场景下的重构路线图与风险控制策略。 24直播网:sean.sjbzu.mobi 直播下载:sjbzq.mobi 24直播网:soccer.sjzmama.net 直播下载:sjzhzkc.com 直播下载:sjz361.com
新手乐园
33,316
社区成员
41,770
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章