[C/C++]: C++ Static Property
来源:互联网 发布:日本拉面的做法知乎 编辑:程序博客网 时间:2024/05/29 17:49
1.静态成员,static member
(1).类体系中的全局变量,体系内的所有类共享,遵循public/protected/private访问规则。
(2).类内声明,类外定义和初始化。
// static member testclass base {public:static int _staticVal; // declare };int base::_staticVal = 0; // define and initializedint main(){base baseObject;}
(3).可以成为成员函数的默认参数,普通数据成员不行。
// static member testclass base {public:void setValue(int vala = _staticVal/*, int valb = _nonstaticVal */) {_vala = vala;//_valb = valb;}private:static int _staticVal;// int _nonstaticVal;int _vala;// int _valb;};int base::_staticVal = 0;int main(){base baseObject;}
(4).静态数据成员可以是所属类的类型,普通数据成员不行。
// static member testclass base {public:base() {_val = 0;}static base _staticVal; // okint _val; // ok//base _val; // error};base baseObject;base base::_staticVal = baseObject;int main(){base baseObject;}
(5).冠以前缀mutable的数据成员或者static member,可以在const method当中被改变。
// static member testclass base {public:base() {_i = 0;_val = 0;}mutable int _i;static int _staticVal;int _val;void test() const {_i++; // ok_staticVal++; // ok//_val++; // error}};int base::_staticVal = 0;int main(){base baseObject;}
2.静态成员函数,static method
(1).可以用普通函数指针操作,成员函数需要用类成员函数指针操作。
// static method testclass base {public:static void setValue(int val) { };void getValue(void) { };private:static int _staticVal;int _val;};int base::_staticVal = 0;int main(){base baseObject;void (*staticFunPointer)(int) = &base::setValue; // ok// void (*normalFunPointer)(void) = baseObject.getValue; // errorvoid (base::*normalFunPointer)(void) = &base::getValue; // ok}(2).不能同时声明为const,virtual,volatile。
// static method testclass base {public:static void setValue(int val) { };//static void setValue(int val) const { }; // error//virtual static void setValue(int val) { }; // error//static void setValue(int val) volatile { }; // errorvoid getValue(void) { };private:static int _staticVal;int _val;};int base::_staticVal = 0;int main(){base baseObject;}
(3).不能调用类的非静态成员,无this指针。
// static method testclass base {public:static void setValue(int val) { // _val = val; // error_staticVal = val; // ok};private:static int _staticVal;int _val;};int base::_staticVal = 0;int main(){base baseObject;}common attribute:
无须创建任何对象就可以访问类的static property。
- [C/C++]: C++ Static Property
- property (C++)
- static.c
- c-static
- static C
- C static
- static c
- C static
- C#static
- C Static
- c static
- Static (C++)
- static c
- C++static
- [C++]static
- C#-static
- C static
- c++static
- “印象笔记”发布第一周下载量超美日总和
- SVM入门(八)松弛变量
- SVM入门(九)松弛变量(续)
- Eclipse设置、调优、使用
- BCB设计时组件编译错误
- [C/C++]: C++ Static Property
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- SVM入门(十)将SVM用于多类分类
- C#中控件的Click事件与MouseClick事件有什么区别?
- Linux--字符串转16进制
- 转HTML5 web storage
- window xp PHP5.2.17 apache2.2 mysql eclipse 数据库连接(mysql,oracle10)
- Tex Quotes(P1488)
- 文本分类入门-特征选择方法之信息增益