类和对象的基础6——类的作用域和生存周期
来源:互联网 发布:附加遗产网络剧百度云 编辑:程序博客网 时间:2024/05/16 17:10
一、类的作用域
1、类的作用域:在类中定义数据成员和函数成员的作用域是整个类,在类外是否可见取决于该类的访问权限(public、protect、private)。
2、分类:按作用域分类的话,可以分为一般类、嵌套类(定义在某个类中)、局部类(定义在某个函数内)。
二、类的生存周期
1、按生存周期由常至短的排:全局对象>静态对象(外部静态>内部静态)>局部对象。
2、各种对象的定义:
(1)全局对象:定义在某个文件中,它的作用域为整个程序。程序开始执行时,调用构造函数创建该对象;当程序结束时,程序调用析构函数释放该对象。
(2)静态对象:其作用域也是整个文件,它与全局对象的区别在于,静态对象由于有static的限制,所以只能作用于本文件中;而全局对象则不同,在其他文件中要使用该变量 的话,用extern进行外部声明即可。静态按作用域的不同可分为内部静态对象和外部静态对象。内部静态对象的作用域是定义该对象的函数体类或者分程序 内,外部静态对象的作用域就是定义该对象的文件内。
(3)局部对象:局部对象一般定义在一个函数体内或者一个分程序中。
三、例子:验证各种对象的作用域以及生存周期。
/*******************************************************时间:2016年10月2日14:32:12功能:用于验证全局变量、静态变量、局部变量之间的关系********************************************************/#include <iostream>using namespace std;class Car {public:Car(char *pn); //构造函数~Car(); //析构函数private:char name[10];};Car::Car(char *pn){if(pn != 0){strcpy(name,pn);cout<<"call the "<<name<<" constructor"<<endl;}}Car::~Car(){printf("call the %s Deconstructor\n",name);//cout<<"call the"<<name<<" Deconstructor"<<endl; //这里未用cout是因为cout会先于全局对象析构}void func(){Car c1("func car"); //局部对象static Car c2("innerStatic Car"); //内部静态对象cout<<"in the func"<<endl;}Car c3("Global Car"); //全局对象static Car c4("externStatic Car"); //外部静态对象void main(){Car c5("main car");cout<<"before call the func function"<<endl;func(); //从结果来看函数对象在函数调用时初始化,函数结束时释放cout<<"after call the func function"<<endl;}运行结果如下图:
0 0
- 类和对象的基础6——类的作用域和生存周期
- 类和对象的生存周期
- 作用域和生存周期的区别
- static作用:静态变量的生存周期和作用域
- static作用:静态变量的生存周期和作用域
- static作用:静态变量的生存周期和作用域
- static作用:静态变量的生存周期和作用域
- 类对象的生存周期
- 类对象的生存周期
- 类对象的生存周期
- 浅析变量的作用域和生存周期的区别
- php中常量,变量的作用域和生存周期
- php中 常量,变量的作用域和生存周期
- 静态变量的生存周期和作用域
- 类的作用域和对象的生存期
- c++类对象的生存周期
- 浅析php中常量,变量的作用域和生存周期
- 浅析php中常量,变量的作用域和生存周期
- DRBD 及 DRBD配置
- 【37.38%】【codeforces 722C】Destroying Array
- 台媒猜大陆歼20明年初服役:首批列装数量或达两位数
- 价值1400美元的CEH(道德黑客)认证培训课程长啥样?(3)工具集
- How to use Facebook iOS SDK on iOS 10
- 类和对象的基础6——类的作用域和生存周期
- 【leetcode】4. Median of Two Sorted Arrays
- 数字排列组合
- 稀疏矩阵快速转置算法理解
- python中classmethod和staticmethod的区别
- linux 命令大全
- AC自动机--------hdu 2222
- 【record】9.24..10.1
- 函数