++静态数据成员/静态函数成员总结
一、静态数据成员
1.几种错误用法总结
class A
{
static int a;
void test()
{
int b = a;//错误,因为没有定义a,会提示找不到a
}
}
class A
{
static int a = 2;//错误,非const静态数据成员不能在类体中初始化
}
class A
{
static const int a = 2;
void test()
{
int b = a;//错误,虽然static const成员变量可以再类体中初始化,但仍需
要在类外定义,且不能再次初始化
}
}
const A::a[4];
class A
{
static const char a[4] = "err";//错误,只有有序的const静态数据成员可在类
体中初始化
}
2.正确用法例子:
int A::a = 2;
const int A::b;
const int A::c("err");
class A
{
static int a;
static const int b = 2;
static const char c[5];
}
3.可以通过const方法修改静态数据成员的值。
如果是public静态数据成员,也可以通过对象或者类域修改。
4.静态数据成员所有类共享,包括子类
5.不要在头文件中定义静态数据成员,否则可能会出现多次定义情况。
6.静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以
7.静态数据成员的类型可以是所属类的类型,而普通数据成员则不可以。普通数据成员
的只能声明为所属类类型的指针或引用
class A
{
static A a;//可以
A b;//不可以
}
二、静态函数成员
1.只能访问静态数据成员
2.静态成员函数不能同时声明成const, virtual,volatile类型。
3.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用类成员函数
指针来储存。
class A
{
static int func1();
int func2();
}
int (*psf)() = &A::func1;
int (A::*pf)() = &A::func2;
分享到:
相关推荐
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。...本例就是自己的研究成果,使用非静态的成员函数作为线程函数,还能修改类的非静态的数据成员。
C++类与对象:static静态数据成员静态成员函数.doc
对C++静态成员函数和静态成员变量的使用方法和内部机制进行的经验总结
C++静态成员变量和静态成员函数C++静态成员变量和静态成员函数
在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢? 这个问题便是本章的重点:
C++类中的静态成员变量和静态成员函数的作用
静态函数成员与非静态函数成员都为类所有,对象并不存在函数的拷贝。静态成员函数和非静态成员函数的根本区别在于非静态函数由对象名.或者对象指针->调用,调用时编译器会向函数传递this指针;静态成员函数则有类名:...
通过函数指针调用C++非静态成员函数通过函数指针调用C++非静态成员函数
编写一个类,声明一个数据成员和一个静态数据成员,让构造函数初始化数据成员,并把静态数据成员加1,让析构函数把静态成员减1。(创建三个对象,然后显示他们的数据成员和静态成员,在析构每个对象,显示结果。)
静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数访问。原因是:当前对象的地址(this)是被隐含地传递到被调用...
当然在C++灵活性下面,类还具备了静态成员和静态函数,即 class A { public: static void test() { m_staticA += 1; } private: static int m_staticA; int m_a }; 此时你的test函数只能去访问m_...
C++静态成员函数小结.doc 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有...
1、讲解static静态局部变量的原理与特点; 2、讲解static静态全局变量的原理与特点; 3、讲解static静态成员变量的原理与特点; 4、讲解static静态成员函数的原理与特点;
类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据...
声明为 static 的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称 做静态成员和静态成员函数。
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习...
C++Hook(钩子)编程,通过内联汇编,使类成员函数代替全局函数(静态函数)[收集].pdf