社区
新手乐园
帖子详情
请教关于函数指针和const的理解
discory
2006-03-08 10:52:37
我对这个概念还不是很明白,看了一些资料, 如说函数就是一个地址,这个能理解
但是,如int *f(), int (*f)(),这个怎么理解啊,在难点如:int *(*f)()就完全不明白了
变量指针还好,但是遇到函数指针和类指针就昏掉
还有个问题就是int f() const这句语法是什么意思,是不是函数定义成const要在把const加
在函数后面?
新手,请多多帮助哈
...全文
116
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 为只读方法
C语言|指针进阶(2):常量指针和指针常量、数组参数和指针参数、
函数指针
指针是我们学习C语言的重工具,这篇博客是我对C语言指针进阶探索的又一深入,主要讲了指针常量和常量指针、数组参数和参数数组、
函数指针
、
函数指针
数组、指向
函数指针
数组的指针,很多思想基础在我的另一篇指针博客中有提到,有兴趣的朋友可以去看一下。刚开始学习指针不久,写的不好,向各位大佬
请教
,欢迎大家给我提任何问题.........
类成员函数作为
函数指针
实参输入的方法
类成员函数作为
函数指针
的实参被传递
const
魔怔人:引用 + 指针 +
const
请看代码: void func(
const
int *& p) {...} 请问这个参数是啥?首先肯定是对 指针的一个引用。那
const
是针对谁的
const
? 我们定义一个左值传入试试: int t = 10; int *p = &t; func(p);//error! 用普通指针作为实参,直接就报错了: binding reference of type '
const
int*&' to 'int*' discards qualifiers 但是把 p 改成
const
pthread_create使用类中
函数指针
的…
原有的程序是利用一台PC机的共享内存来实现两个程序间的通讯的,最近要求改了,要设计2台PC间这两个的程序的通讯,想把通讯部分的程序做成类封装起来。其中,由于要有多线程的部分。就是说,可能在一个线程里读,在另一个线程里写。所以得用到类成员函数的
函数指针
部分。 为了验证可行性,编写了下面的程序: class MyThread { public: static int num; st
函数指针
与软件设计
转载自:https://blog.csdn.net/absurd/article/details/761943
函数指针
与软件设计 记得刚开始工作时,一位高手告诉我,说,longjmp和setjmp玩得不熟,就不要自称为C语言高手。当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法。后来明白那不单是跳来跳去那样简单,而是一种高级的异常处理机...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章