一个个来,首先static
static成员变量只能类外初始化 type classname::var(=x);
static函数可以类里定义也可类外...
而貌似static 非成员函数的static只表示该函数仅该文件可见...
关于引用
引用要绑定实体,这个实体是 int &ra=func(); 语句等号右边的值,即函数func()的返回值(也是一个引用,而这个引用每次调用时在return 语句中被初始化为静态变量a),
所以,ra的实体是a。代码: 程序代码:
#include <iostream> using namespace std; int & func() { static int a; //静态局部变量a的生命周期是全局的 static int j; printf("&a=%ld,&j=%ld\n",&a,&j); return a;//返回一个生命周期长于func函数执行期的变量 } int main() { int i; int &ra=func(); //ra为静态变量的别名 printf("&ra=%ld,&i=%ld\n",&ra,&i); cout<<func()<<endl; //输出0 ,静态变量默认为0 func()+=8; //作为左值使用 cout<<func()<<endl;//输出8 ra +=10; // 丧失了局部可见性 cout<<func()<<endl;//输出18 return 0; }
可以证明ra的实体是a。
关于构造执行顺序
先mark一下