c++Primer,七,函数

 第七章 函数

讲到函数,就涉及的多点了,目前来说,讲c语言中的普通函数,对于c语言函数的理解还没透,现在讲c++,还要有类成员函数,不过现在来说,所有的函数都一样的,函数有返回类型和形参列表所决定,函数名就是个该函数的一个指针,对应一个地址,调用函数的时候,call下这个地址是不是就调用了这个函数??类成员函数看起来是类具有的,网上可以看到,其实它和普通的函数一样,都可以看成c语言那种全局函数,都有自己的地址,只是调用的时候,地址什么的转换了一下,当然这只是我看到的理解,其实是啥,我也不知道,等学深了之后,再好好分析,不管错的,对的,现在还是怎么符合自己的运用逻辑,怎么想吧,万一哪天就顿悟了呢,呵呵。

下面是看c++Primer这本书:

函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一 对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。C++ 语言使用调用操作符(即一对圆括号)实现函数的调用。

普通非成员函数:类似于c语言的函数。

类成员函数:独属于类的函数,每个成员函数(static成员函数除外)都有一个额外的、隐含的形参将该成员函数与调用该函数的类对象捆绑在一起。

关于函数的那些事就不多说了,还有什么传址,传值,thiscall,stdcall,cdecl等等高大上的名词,有兴趣慢慢看。。。

函数重载和函数覆盖:无论是类成员函数还是非成员函数,都可视为函数,都具有函数的特性。函数重载是参数列表不同,函数覆盖(重写),是完全一样的函数进行了作用域的覆盖。

内联函数:将函数指定为 inline 函数,(通常)就是将它在程序中每个调用点上“内联地”展开。实现在类定义里的函数都是内联函数。

函数指针:函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也 指向某个特定的类型。 函数类型由其返回类型以及形参表确定, 而与函数名无关从这里,可以思考,是不是c++除语言本身的语法外,其他所有皆类型,无论是内置类型,还是类类型,哪怕是定义的一个函数,都是类型,类型的对象都有一个存储位置,知道了这个地址,就可以使用它。指向函数的指针可用于调用它所指向的函数。可以不需要使用解引用操作符,直接通过指针调用函数也可以要)。关于这块的内容,还会有类成员函数的指针等相关知识,所以仍可单独作为一个知识块来学习。现在到了c++11,函数指针有被进一步包装了下,使用更方便。原来函数指针指向非成员函数,指向类static函数,指向类普通成员函数,是有丢丢区别的。

eg:

void f(){ cout<<"f"; }

class A{

public : void Af(){ cout<<"Af"; }

public: static void ff(){cout<<"ff";}

};

typedef void(*pf)();

typedef void(A::*paf)();

pf p = f;

p = &A::ff;

(*p)();

A a;

paf p2 = &A::Af;

(a.*p2)();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值