原帖子地址:https://bbs.csdn.net/topics/390750229

静态成员函数调用方式 
A:: s_fun();//不需要额外传递一个参数,作为this 指针;因为静态函数,属于类,不属于具体对象。
非静态成员函数调用方式 。

非静态成员函数,属于对象,需要隐式传递 this 指针作为参数。

A a;

A &ref=a;

A *ptr = &a;

int main(){

a.fun();   // 1)对象; 传递&a, 即a 的地址作为 fun的 this 指针;

ref.fun();  // 2)引用;传递&ref,也即&a  即a 的地址作为 fun的 this 指针;

ptr->fun();  // 3)指针; 传递 ptr ,也即&a  即a 的地址作为 fun的 this 指针;

return 0;
}

静态成员函数,可以调用非静态成员函数,反之非静态成员函数也可以调用静态成员函数;

在静态成员函数,内部调用非静态成员函数,需要一个额外的对象,这个对象可以是任何可见的,可以访问的全局变量,静态变量(对象,引用,指针对应的对象)
也可以是静态成员函数的参数(通过对象,引用,指针),以及静态函数内部定义的局部变量。

非静态成员函数,可以直接调用静态成员函数。
非静态函数,可以隐式的通过this指针,调用除了构造析构构函数之外的,任何非静态成员函数。
也可以显示的通过this指针,调用除了构造析构构函数之外的,任何非静态成员函数。
可以调用构造函数,构造本类的其他对象。
也可以自动调用析构函数,析构本类的其他对象。
有时候甚至可以显式调用析构函数,析构某些对象。
例如:

a::fun_ather(){}

a:: fun(){

fun_ather();           //隐式的通过this指针,调用其他非静态成员函数,这是下面式子的省略写法。

this-> fun_ather();//显示的通过this指针,调用其他非静态成员函数。

}

this 指针,是对象调用函数的时候,隐式传递的。因为形参表,以及实参表里面都没有直接使用this 这个参数;
所以他是隐式的自动传递的;

方式很简单,就是  a.fun(),r.fun(), ptr->fun() ,这种写法的前面那个数据中,对象的地址传递给 this。
编译器安排某种方法,传递这个参数;

例如:VC6~VC10,32Bits 采用ecx 寄存器传递this 指针。

PS:
估计,要么是你只看到书中内容的一个片段;
要么是编者,并不是很理解C++静态成员函数,非静态成员函数;

静态成员函数,可以非静态成员函数;反之亦然;
只是调用方式有所不同。
1)类外函数调用成员函数
1.1)其他函数调用成员函数,调用静态成员函数,需要通过类名调用;A:: s_fun();
1.2)其他函数调用成员函数,调用非静态成员函数,通过对象调用; a.fun();r.fun();ptr->fun() ;

2)成员函数的互相调用:

2.1静态成员函数调用静态成员函数,直接用函数名 s_fun();
2.2) 非静态成员函数调用静态成员函数,直接用函数名 s_fun();
2.3非静态成员函数调用非静态成员函数,也可以直接用函数名,fun() ;这是通过this指针来调用的。
2.4)静态调用非静态,由于调用静态函数的代码,没有传递对象相关参数this指针,需要通过其他可以访问的对象来调用。
        a.fun();r.fun();ptr->fun() ;

作为以上所有总结,可以看下面的例子

class A

{

int x;

static A a;

public:

void fun(){};

void fun_other(){};

static void s_fun();

static void s_fun(A & ref);

};

A A::a;

A a0;

void A::s_fun()

{

a.fun();

a0.fun();

s_fun(a);

s_fun(a0);

};

void A::s_fun(A & ref)

{

ref.fun();

a.fun();

a0.fun();

}

int main()

{

A:;s_fun();

return 0;

}

静态成员函数调用方式--收藏帖子相关推荐

  1. C++函数调用方式(_stdcall, _pascal, _cdecl...)总结 收藏

    C++函数调用方式(_stdcall, _pascal, _cdecl...)总结 收藏 __stdcall: _stdcall 调用约定相当于16位动态库中经常使用的PASCAL调用约定.在32位的 ...

  2. JavaScript中七种函数调用方式及对应 this 的含义

    http://blog.sina.com.cn/s/blog_621f1e120100rj21.html this 在 JavaScript 开发中占有相当重要的地位,不过很多人对this这个东西都感 ...

  3. php回调函数如何执行顺序,PHP回调函数调用方式

    //PHP回调函数调用方式 // 类MyClass class MyClass { //静态方法 public static function myCallbackMethod() { echo &q ...

  4. 字节对齐和C/C++函数调用方式学习总结(多篇节选)

    字节对齐和C/C++函数调用方式学习总结 created: 04-06-17 last saved: author: ayixidelu 前言: <***软件编程规范>中提到:" ...

  5. _cdecl、_stdcall 、_fastcall、_thiscall 函数调用方式与区别

    几种函数调用方式 __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用 ...

  6. 用python的五种方式_Python加载数据的5种不同方式(收藏)

    数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...

  7. C语言试题八十一之利用递归函数调用方式,将所输入的5个字符,相反顺序打印

    1.题目 利用递归函数调用方式,将所输入的5个字符,相反顺序打印 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础, ...

  8. python数据加载常规教程_Python加载数据的5种不同方式(收藏)

    数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...

  9. 函数调用方式以及this指向

    函数调用方式以及this指向 普通函数:fn(); function fn(){console.log( '普通函数:'+ this);}fn();//普通函数:window 对象的方法 var ob ...

最新文章

  1. 武汉第二中学2021年高考成绩查询,武汉中学排名前十名,2021年武汉中学排名一览表...
  2. pta7-3 统计不及格人数_编写程序,统计学生的成绩信息
  3. Robot Perception for Indoor Navigation《室内导航中的机器人感知》
  4. 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA
  5. python重定向_在Python中使用urlopen()防止“隐藏”重定向
  6. array函数参数 scala_scala – 在Spark SQL中将数组作为UDF参数传递
  7. 安卓模拟器不能上网时可尝试更改成谷歌DNS
  8. for mew歌词 shell_求shell for mew的中文歌词
  9. python和java选择哪个-python和Java选择哪一个?
  10. java+jdk+1.6.0+45+64_jdk1.6.0_45.tar.gz
  11. 分辨率_电视分辨率多少合适
  12. MATLAB-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化
  13. 【C语言】筛选法求素数
  14. WinCC数据报表控件
  15. html字体白色边框黑色效果,css完整总结:第二篇(尺寸,外补白,内补白,边框,背景,颜色,字体,文本,文本装饰)...
  16. 吴伯凡-认知方法论-真真切切的感觉
  17. js两数相乘出现多小数
  18. Linux 笔记本电脑选购指南
  19. 管理好公司固定资产需要做什么?资产管理一步到位
  20. feign POST请求报错 too many bytes written

热门文章

  1. 唐人街探案3观后感:大四学生的看法
  2. 啊,我南非时间上午10点看成了。。
  3. 《网络攻防实践》第七周作业
  4. 博客园今天将排名计算错误了
  5. 1. Linux内核的配置与裁减:
  6. 标本兼治:企业应揪出网络漏洞元凶
  7. xtrabackup增量备份mysql +MHA
  8. 混合APP开发框架资料汇总
  9. 知乎专栏应用客户端源码项目
  10. CentOS设置程序开机自启动的方法