C++类的成员函数可以c 调用其他类的函数成员函数吗

类中定义的几个成员函数间可以相互调用吗,有次序要求吗?_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:238,136贴子:
类中定义的几个成员函数间可以相互调用吗,有次序要求吗?收藏
没有次序要求。既然是一家人(成员),东西是可以相互用的(无论私有还是公有、保护)只是有一点要注意:假定有成员函数A和成员函数B如果A中调用B,然后B中又调用A。这种相互交叉调用,空手套白狼,估计程序要崩溃。。。。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或C++中类成员函数未实现,是否能够编译链接通过
在写代码中经常发现有些类中的成员函数(包括nonvirtual func, virtual func and pure virtual func, static func)并未实现,但仍然能够正常的编译链接通过?
没想太明白,于是做了一下试验。
1)先用纯虚函数做试验
#include &stdafx.h&
#include &iostream&
virtual void Display() = 0;
int _tmain(int argc, _TCHAR* argv[])
编译链接正常
2)用虚函数
virtual void Display();
编译链接正常
3)用一般函数
void Display();
编译链接正常
4)用静态函数
static void Display();
编译链接正常
发现其实定义成任何一种成员函数都没有问题,都能够正常的编译链接通过。
那么什么情况下会出现无法编译链接通过呢?
那很明显应该在类实例化或调用函数时,仍然对上面4种函数进行试验。
1)使用纯虚函数
#include &stdafx.h&
#include &iostream&
virtual void Display() = 0;
int _tmain(int argc, _TCHAR* argv[])
编译失败,报错&&error C2259: 'CA' : cannot instantiate abstract class
2)使用虚函数
virtual void Display();
链接失败,报错error LNK2001: unresolved external symbol &public: virtual void __thiscall CA::Display(void)& (@@UAEXXZ)
3)使用一般函数
#include &stdafx.h&
#include &iostream&
void Display();
int _tmain(int argc, _TCHAR* argv[])
编译链接通过,就说明CA对象a可以实例化
很显然,如果调用a.Display(),链接自然会失败
4)使用static函数
#include &stdafx.h&
#include &iostream&
static void Display();
int _tmain(int argc, _TCHAR* argv[])
同一般函数一样,编译链接通过,CA对象可以实例化。
但调用CA::Disply(),链接会失败。
通过以上试验可以对类中定义的成员函数有个一般性的结论了:
1)该类未有任何调用,则不影响任何编译链接
2)当类实例化时,纯虚函数和虚函数无法实例化,原因分别为编译时和链接时报错,这跟vtable相关;一般函数和静态函数可以实例化
3)当类实例化并调用对应的方法时,这个时候肯定必须实现方法了,要不程序怎样调用对应函数指针
以上就是分析的结果。
转:http://m.blog.csdn.net/blog/u723881
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
C++中类成员函数作为回调函数 [转] http://blog.csdn.net/this_capslock/article/details/ 回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过.
普通的 ...
原文出处:点击打开链接
在C++中类成员函数指针是一种比较特别的指针,尽管直接使用类成员函数的情况不太多,但是还是有必要详解一下这类指针.
首先说明一下类成员函数指针的声明方式:
Return_Type (Class_Name::* pointer_name) (Argument_List); Re ...
回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过.
普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通 过传递一个指向自身的指针给其成员函数从而实现程序函数可以访问C++的数据成员.这也可 ...
搜了一圈答案,基本上都是启动线程的时候传入this指针,在线程函数内部再强转的解决方案.可能显得有些别扭. 编译器不允许强制转换,那就用union来实现. union { void *(*trfunc)(void *); void *(lock_client_cache::*memfunc)(); } func.memfunc = &lo ...
C++中的成员函数指针(member function pointer)提供了对类成员函数进行动态访问的机制.比如定义如下的类: class Base { public:
void baseFunc(); }; 那么可以定义成员函数指针: void (Base::*mfp)() = &Base::*baseF 并且通过下面的语句执行 ...
这篇文章主要介绍了C++中类的成员函数指针,例子中以讨论用函数指针调用类的成员函数为主,需要的朋友可以参考下C语言的指针相当的灵活方便,但也相当容易出错.许多C语言初学者,甚至C语言老鸟都很容易栽倒在C语言的指针下.但不可否认的是,指针在C语言中的位置极其重要,也许可以偏激一点的来说:没有指针的C程序不是真正的C程序.然而C++的指针却常常给我一种束手束脚的 ...
昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout&&&printA&&& } virtual void printB() { cout&&&printB&&& ...
昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout&&&printA&&& } virtual void printB() { cout&&&printB&&& ...C++类的成员函数可以调用其他类的成员函数吗
[问题点数:20分,结帖人a1232345]
C++类的成员函数可以调用其他类的成员函数吗
[问题点数:20分,结帖人a1232345]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年9月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。500 - 内部服务器错误。
500 - 内部服务器错误。
您查找的资源存在问题,因而无法显示。

我要回帖

更多关于 调用其他类的函数 的文章

 

随机推荐