试图对C++友元函数,静态成员函数做个小结

来源:互联网 发布:游泳减肥 知乎 编辑:程序博客网 时间:2024/06/02 05:55

2014年12月13日 22:28:43 第一篇博客   以下仅仅是个人观点,请大家指正.

 友元函数分类:(按照我的想法,结合C++ Plus)

一.   1. 让其他类(B类)的成员数最为类A的友元函数(只需要在类A中声明即可)

        2.让类B成为类A的友元类---->>>以上两种方式必须通过B的引用,指针或者对象来调用

二.   1. 让一个全局函数成为友元函数(可以定义在类内,也可以定义在类外,但与静态成员函数不同的是,在类外定义和声明不能加上A::作用域描述符.

            因为友元不是类A的作用域内的函数,他只是在类A中声明此函数有权限访问类成员而已,与一般的声明意义是有很大区别的. 因此调用的时候也不能加上A::) 

           另外,值得注意的是,有些编译器还需要在类外再次声明友元函数,使得这个友元函数全局可见(个人见解),有些则不需要.

           建议,在类内声明友元,在类外定义友元,这样,可以避免编译器的限制.

          再次强调友元函数是全局的,在类内的声明只是为了说明他有权限去访问类内的成员.


静态成员函数: 

         静态成员函数是在类A作用域的,属于类A的成员,但不是对象成员.

         它可以通过对象调用(但不建议),因此它的声明定义要加上A::作用域说明符(在类外).

静态成员变量:

        除了静态const类型的成员变量外,静态成员变量必须在类外初始化.

        静态的const类型的成员变量可以在类内初始化.


一般的

变量的声明是为了表明作用域和生命周期.申请内存空间

变量的初始化是告诉编译器变量最初应该赋什么值.

变量的定义往往伴随了声明和初始化(没有明显赋值的就是默认初始化,例如int类型全局变量被默认赋值为0)

函数的声明表明此名字在当前作用域可见,并且可能伴随着名字隐藏.

函数的定义就是表明函数具体做什么.        C++感觉名字查找和作用域很重要


有一种函数需要多次定义,那就是inline函数,因此inline函数一般定义在头文件中

0 0
原创粉丝点击