当前位置: 首页 > news >正文

营销网站与企业网站的区别百度推广助手电脑版

营销网站与企业网站的区别,百度推广助手电脑版,折扣卡网站建设,山东疫情中高风险地区最新名单C的成员变量指针和普通的指针没有什么大的区别,int类型成员变量的指针就是和int *, Foo类型的成员变量的指针就是Foo *,但是成员函数就不大一样了,主要是因为非静态成员函数实际上都隐藏这一个调用对象的指针的参数。 静态成员函数…

C++的成员变量指针和普通的指针没有什么大的区别,int类型成员变量的指针就是和int *, Foo类型的成员变量的指针就是Foo *,但是成员函数就不大一样了,主要是因为非静态成员函数实际上都隐藏这一个调用对象的指针的参数。
静态成员函数指针,和普通的C函数指针没什么两样
class Foo
{
public:
    static int foo();
};
int (*fp)() = Foo::foo();
因为静态成员函数的执行和类的对象无关,也没有隐藏的对象指针参数

非静态成员函数,因为有隐藏的对象指针参数,就有点不一样
class Foo
{
     int foo1();
     int foo2(long);
};
为了代码的简洁,最好用typedef先定义指针类型
typedef int (Foo::*fpType1)(); //Foo类返回类型为int,参数列表为空的成员函数指针类型
typedef int (Foo::*fpType2)(long); //Foo类返回类型为int,参数列表为long的成员函数指针类型
然后就可以声明指向成员函数的指针
fpType1 fp1 = &Foo::foo1;
fpType2 fp2 = &Foo::foo2;
通过成员函数调用的时候注意,因为非静态的成员函数执行实际上是需要一个类对象的
Foo f;
int result = (f.*fp1)();
或者通过对象指针
Foo f2 = &f;
int result2 = (f2->*fp1)();

类 对象的成员函数能够提供灵活的对成员函数的调用,今天写一个测试程序,为了这个测试程序的“扩展性”,研究成员函数指针花了一些时间,最后还是用别的方法 来实现“扩展性”。虽然C++提供了这种个功能,我觉得还是尽量不要使用的好,程序不大容易读,就算我懂,将来维护代码的同僚未必明白,所以成员函数指针,能不用还是不用的好。

那么如何解决这个问题,实现指针调用类的成员函数 也就是说将函数名作为另一个函数的参数?
1 在每个被调用函数之前加上static, 可以使成员函数脱离对象信息单独存在,虽然它属于这个类,但是没有附带上对象信息,但是前提是,static成员函数不能使用对象的信息(成员和函数)。
2 使用一个全局函数做中转,间接调用成员函数,如下代码修改Test3:
#include <stdio.h>
#include <iostream>
class Test3;
void _cdecl Helper(Test3 *test3);
class Test3
{
public:
void Memberfun1(void (*f2)(Test3 *))
 {
  f2(this);
 }
 void  Memberfun2()
 {
  std::cout<<"Calling Test3::Memberfun2 OK"<<'/n';
 }
 void Memberfun3()
 {
  //Memberfun1(Memberfun2);//出错
   Memberfun1(Helper);
 }
};
void _cdecl Helper(Test3 *test3)
{
 test3->Memberfun2();
}

int main()
{
 Test3 t3;
 t3.Memberfun2();
 return 0;
}
3 使用一个函数参数函数对象信息的static类型的成员函数中转,间接调用其它成员函数。
#include <stdio.h>
#include <iostream>
class Test3
{
public:
 static void _cdecl Helper(Test3 *test3)
 {
  test3->Memberfun2();
 }
void Memberfun1(void (*f2)( Test3 *))
 {
  f2(this);
 }
 void  Memberfun2()
 {
  std::cout<<"Calling Test3::Memberfun2 OK"<<'/n';
 }
 void Memberfun3()
 {
  Memberfun1(Helper);
 }
};

int main()
{
 Test3 t3;
 t3.Memberfun3();
 return 0;
}
由此可见,函数指针不能直接调用类的成员函数,因为成员函数指针和一般函数指针有着本质差别,因为成员函数带有很多对象信息。要解决调用的问题,应该使用static或者全局函数,实现间接调用。
http://www.mmbaike.com/news/80294.html

相关文章:

  • 百度快照和做网站有关系吗百度账号注册平台
  • 广州品牌网站建设公司广州seo和网络推广
  • 免费素材网站pexels百度大全
  • 深圳网站建设公司联华网络营销的成功案例分析
  • 传媒有限公司免费网站河南seo优化
  • 中国网站建设排名sem和seo
  • 做音乐网站的条件北京网站seo
  • 织梦 网站无法显示该页面一句吸引人的广告语
  • 基于html css的网站设计百度官网app下载安装
  • 建设传奇私服发布网站网站关键词排名优化软件
  • 网站建设基本流程规范企业网站搭建
  • 新增网站友情链接代码模板
  • mvc 网站 只列出目录吉林seo关键词
  • 个人网站建设代码东莞网络排名优化
  • 手机怎么自创网站香港疫情最新情况
  • 哪个网站做关于党建述职的材料网络推广服务
  • 广州外贸网站建设公司企业seo推广
  • 仿照别的网站做10条重大新闻事件
  • 做阿里巴巴网站店铺装修费用外链网站推荐
  • wordpress w3温州seo推广外包
  • 曲靖 曲靖网站建设软件(app)开发企业管理咨询培训
  • 旅游网站建设平台分析优化营商环境条例解读
  • 网站更换服务器怎么做网络营销策略内容
  • 河南新蔡有做网站建设的吗自己建网页
  • 大良营销网站建设策划百度seo关键词排名优化
  • 邯郸网络技术公司做网站优化推广
  • 做企业网站报价江苏网络推广公司
  • 主做熟人推荐的招聘网站线上营销平台
  • 天台网站建设广告制作
  • 摄影网站源码下载百度云搜索引擎入口手机版