最近看Effective C++经常看到一些和static相关的内容,希望综合整理一下,如果有不全,还望补充:
1 类中的Static成员变量
static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!
一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不...
分类:
其他好文 时间:
2015-01-08 21:41:01
阅读次数:
242
1. 静态成员函数不能引用非静态成员。2. static成员函数中不能访问普通的成员,但是可通过 类名::成员访问静态成员。3. 普通的成员函数中可以访问静态成员。4.普通的外部函数可以访问静态成员。#include using namespace std ;#include //---------...
分类:
编程语言 时间:
2014-11-12 16:24:44
阅读次数:
244
有这样一个类,我们以此类为基础: 1 class Foo 2 { 3 public: 4 5 //void (Foo::*)(int) 6 void foo(int a) 7 { 8 cout *pFunc2)(12);相对于static成员函数,我们可以像...
分类:
编程语言 时间:
2014-10-10 15:53:10
阅读次数:
234
static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。
函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题:如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。而static变量可以保持该变量的值,使得函数在下次调用时还保持上次函数退出时的...
分类:
编程语言 时间:
2014-10-04 21:40:37
阅读次数:
245
首先,定义如下类A:
class A
{
private:
static int val_s;
public:
static int getVal(){cout << "call getVal in A..." << endl;return val_s;}
};
我们可以看到,上述类的定义中包含静态成员变量val_s 和静态成员函数getVal() ,对于静态的成员变量,一般...
分类:
编程语言 时间:
2014-09-06 12:29:23
阅读次数:
251
C++ 重写重载重定义区别(源自:http://blog.163.com/clevertanglei900@126/blog/static/111352259201102441934870/)1 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virtual关...
分类:
编程语言 时间:
2014-08-28 07:25:59
阅读次数:
214
类成员函数除了static数据成员,类还可以有static成员函数。静态成员函数只能访问其他的static成员,包括数据成员和成员函数。例3-38本例声明了一个内联的static成员函数getN。在例3-35中,我们知道对象和非静态成员函数(包括构造函数和析构函数)可以访问像n这样的static数据...
分类:
其他好文 时间:
2014-07-02 19:44:32
阅读次数:
220
C++ 重写重载重定义区别(源自:http://blog.163.com/clevertanglei900@126/blog/static/111352259201102441934870/)1 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virtual关...
分类:
编程语言 时间:
2014-06-23 08:17:18
阅读次数:
302
1.类的静态成员
static成员变量与函数
static成员变量:必须在类外初始化;(const或引用类型变量必须在构造函数初始化列表里初始化)
static成员函数:
不依赖于类,相当于类里的全局函数(可以由该类对象调用,也可以 类名::函数名()的形式调用)
不包含this指针,不能声明为const,声明为const表示不会改变对象,而stati...
分类:
编程语言 时间:
2014-06-20 09:27:05
阅读次数:
355