21天学通C++--阅读笔记4(静态成员、函数指针)
来源:互联网 发布:excel筛选文本数据 编辑:程序博客网 时间:2024/05/21 06:21
静态成员变量
主要用于在类的实例间共享数据。作用域为类。
class A {static int staticParam;}
intA::staticParam = 0;//静态成员变量初始化,在类的构造函数之外初始化
访问方式:
public: static int staticParam;
A::staticParam ;
private: static int staticParam;
A a; a.staticParam ;
静态成员函数
作用域为类。
class A {static int staticMethod();}
A::staticMethod();//通过类调用
A a;a.staticMethod();//通过对象调用
注:静态成员函数没有this指针(作用域为类),所以不能声明为const。且,类的普通成员变量在类函数中是通过this指针访问的,所以,静态成员函数不能访问非静态成员变量。
函数指针
int * pFunc(int);
//返回int类型的指针,pFunc是函数名
int (*pFunc)(int);
//返回int类型的变量,pFunc是指向函数的指针
使用:(可用于在不同情况调用不同的函数)
intmethodA(int&);
intmethodB(int&);
//函数指针
int(*pFunc)(int&); //与methodA和methodB具有相同的返回类型和参数
pFunc =mehtodA;
pFunc(0); //调用methodA方法
//函数指针数组
int(*pFunc[5])(int&);
pFunc[0] =mehtodA;
pFunc[1] =mehtodB;
if(pFunc[0] !=0) pFunc[0](0);
//函数指针做参数
int (*pFunc)(int&);
pFunc =methodA;
void callFunc(int (*pFunc)(int&), int &){
pFunc(0);
}
callFunc(pFunc,0);//调用
//typedef定义函数指针类型
typedef int (*VPF)( int &);
void callFunc(VPF, int &);
VPF pFunc =methodA;
callFunc(pFunc,0);
成员函数指针
class A {
virtual void methodA() const = 0;
virtual void methodB() const = 0;
}
//成员函数指针
void(A::*pFunc)() const = 0;
pFunc =mehtodA;
A *a;
(a->*pFunc)();
//成员函数指针数组
typedefvoid (A::*VPF)() const;//类外定义
VPF pFunc[2] ={A::methodA, A::methodB};
A *a;
(a->*pFunc[0])();
注:无需对pFunc进行delete,因为pFunc指向代码,需要delete的是自由存储区的对象。
类包容、公有继承、私有继承、友元类
类包容:A类中有B类对象作为成员变量。
class A { Bb;}
友元类:
classB{friend class A;} //A是B的友元类,即A可访问B中的私有成员
友元函数:
class B{
friend void methodB();//不是B类的成员函数,methodB可访问B类中的私有成员
friend void A::methodA();//A::methodA可访问B类中的私有成员
}
应用:
friend ostream& operator<<(ostream & out, B &b);
ostream &operator<<(ostream & out, B &b){
out<<b.privateData;
return out;
}
B b;
cout<<b;
注:const常量不能进行运算符操作,因为会改变const常量,而常量不允许改变。
注:友元关系不能被继承,且不能互通(A为B的友元,但B不一定为A的友元)。
规则:
A类使用B类的某些功能,且不访问B类保护成员时,采用A类包容B类。
根据B类实现A类,且A类需要访问B的保护成员时,采用A类私有继承B类。
A类访问B类的私有成员,采用友元类。
尽量不采用friend友元类,除非需要频繁访问另一个类中的数据。
- 21天学通C++--阅读笔记4(静态成员、函数指针)
- 笔记八:静态变量、静态成员函数、函数指针、静态函数指针
- C/C++静态成员变量和静态成员函数(学习笔记)
- 函数指针--成员函数(静态,非静态)&普通函数
- [C++] 静态成员函数
- 笔记:成员函数指针
- C语言学习笔记(21) 函数指针、回调函数及复杂指针阅读技巧
- 成员函数的指针(C++)
- 普通函数,成员函数,静态成员函数与【指针】
- C++static静态成员函数
- 【C++】静态成员函数小结
- C++:静态类成员函数
- C++的静态成员函数指针
- This 指针和静态成员函数
- 非静态成员函数与this指针
- C++的静态成员函数指针
- C 和指针---阅读笔记
- c和指针阅读笔记
- 用 HTML 格式导出 Excel (如GridView导出Excel)时,如何保留显示网格线
- Xpath
- Android 自定义textview 部分文字字体颜色高亮
- MarkDown参考资料
- jenkins maven 本地jar包 打包问题
- 21天学通C++--阅读笔记4(静态成员、函数指针)
- SharePoint 2013+ Sqlserver 2014 Kerberos (错误的解决方法)
- BZOJ-1009-GT考试-HNOI2008
- ping命令详解
- Delphi 中的容器类
- 21天学通C++--阅读笔记5(输入输出、命名空间)
- Android 自定义View (四)
- OJ 38之最大公约数和最小公倍数
- Composer 安装方法