C++之类的静态变量
成员变量
通过对象名能够访问public成员变量
每个对象都可以有只属于自己的成员变量
成员变量不能在对象之间共享
类的静态成员
静态成员变量 存储在 全局数据区
#include<stdio.h> class Test { private: ///静态成员变量访问权限 static int c1; public: static int GetC1() { return c1; } static void SetC1(int i) { c1=i; } void print() //普通成员函数 { printf("c1=%d\n",c1); } }; int Test::c1=0; int main() { Test t2; t2.print(); Test::SetC1(5); printf("Test::c1=%d\n",Test::GetC1()); printf("sdfasdf......."); getchar(); return 0; }
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关推荐
-
深入解析C++中的动态类型转换与静态类型转换运算符
dynamic_cast 运算符 将操作数 expression 转换成类型为type-id 的对象. 语法 dynamic_cast < type-id > ( expression ) 备注 type-id 必须是一个指针或引用到以前已定义的类类型的引用或"指向 void 的指针".如果 type-id 是指针,则expression 的类型必须是指针,如果 type-id 是引用,则为左值. 有关静态和动态强制转换之间区别的描述,以及各在什么情况下适合使用,请参见 s
-
简要解读C++的动态和静态关联以及虚析构函数
C++静态关联与动态关联.C++是怎样实现多态性的 在现实生活中,多态性的例子是很多的.我们分析一下人是怎样处理多 态性的.例如,新生被录取人大学,在人学报到时,先有一名工作人员审查材料,他的职责是甄别资格,然后根据录取通知书上注明的录取的系和专业,将材料转到有关的系和专业,办理具体的注册人学手续,也可以看作调用不同部门的处理程序办理入学手续.在学 生眼里,这名工作人员是总的人口,所有新生办入学手续都要经过他.学生拿的是统一的录取通知书,但实际上分属不同的系,要进行不同的注册手续,这就是多态.那
-
C++类的静态成员初始化详细讲解
记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!! 复制代码 代码如下: #include <iostream>using namespace std;class test{public:static int num;};int test::num = 0;void main(){cout<<test::num <<endl;test::
-
C++类静态成员与类静态成员函数详解
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关.静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关. 静态数据成员的用途之一是统计有多少个对象实际存在. 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的.也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一
-
详解C++编程中的静态成员与可变数据成员
静态成员 类可以包含静态成员数据和成员函数.当数据成员被声明为"静态"时,只会为类的所有对象保留一个数据副本. 静态数据成员不是给定的类类型的对象的一部分.因此,静态数据成员的声明不被视为一个定义.在类范围中声明数据成员,但在文件范围内执行定义.这些静态类成员具有外部链接.下面的示例阐释了这一点: // static_data_members.cpp class BufferedOutput { public: // Return number of bytes written by
-
关于C++静态成员函数访问非静态成员变量的问题
复制代码 代码如下: class a{public: static FunctionA() { menber = 1; } private: int menber;} 编译上述代码,出错.原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存.静态成员函数没有隐含的this自变量.所以,它就无法访问自己类的非静态成员. 那要想访问怎么办呢?地球人都知道只要将: 复制代码 代码如下: int me
-
C++的静态联编和动态联编详解
一.概述: 通常来说联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程.按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编. 静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型,C语言中,所有的联编都是静态联编,并且任何一种编译器
-
C++中关于[]静态数组和new分配的动态数组的区别分析
本文以实例分析了C++语言中关于[]静态数组和new分配的动态数组的区别,可以帮助大家加深对C++语言数组的理解.具体区别如下: 一.对静态数组名进行sizeof运算时,结果是整个数组占用空间的大小: 因此可以用sizeof(数组名)/sizeof(*数组名)来获取数组的长度. int a[5]; 则sizeof(a)=20,sizeof(*a)=4.因为整个数组共占20字节,首个元素(int型)占4字节. int *a=new int[4];则sizeof(a)=sizeof(*a)=4,因为
-
C++类中的常数据成员与静态数据成员之间的区别
刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵. 常数据成员常数据成员是指在类中定义的不能修改其值的一些数据成员,类似于我们以前学过的常变量,虽然是变量,也有自己的地址,但是一经赋初值,便不能再被修改. 适用于类中定义一些初始化之后不希望被修改的变量. 定义方法: 复制代码 代码如下: const 类型名 变量名; (1)类中的常数据成员只能通过构造函数的参数初始化表进行初始化. (2)常数
-
深入解析C++编程中的静态成员函数
C++静态成员函数 与数据成员类似,成员函数也可以定义为静态的,在类中声明函数的前面加static就成了静态成员函数.如 static int volume( ); 和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分. 如果要在类外调用公用的静态成员函数,要用类名和域运算符"::".如 Box::volume( ); 实际上也允许通过对象名调用静态成员函数,如 a.volume( ); 但这并不意味着此函数是属于对象a的,而只是用a的类型而已. 与静态数据成员不同,静态成
-
C++中静态存储区与栈以及堆的区别详解
学习c++如果不了解内存分配是一件非常可悲的事情.而且,可以这样讲,一个C++程序员无法掌握内存.无法了解内存,是不能够成为一个合格的C++程序员的.一.内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同.静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.它主要存放静态数据.全局数据和常量.栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算
随机推荐
- asp.net repeater实现批量删除第1/2页
- Lua中数字for循环实例
- 正则表达式30分钟入门教程 v2.1版
- Java运用设计模式中的建造者模式构建项目的实例解析
- 浅析Python中的多重继承
- python函数局部变量用法实例分析
- jquery实现ajax提交form表单的方法总结
- javascript 冒号 使用说明
- Apache Web服务器安全配置全攻略
- Android编程实现启动另外的APP及传递参数的方法
- android ocr——身份证识别的功能实现
- Android之联系人PinnedHeaderListView使用介绍
- Android中修改设备权限的方法
- 手机邮融入移动商务 企业营销更快人一步
- vue中如何创建多个ueditor实例教程
- 23种设计模式(12)java模版方法模式
- PHP迭代器和迭代的实现与使用方法分析
- create-react-app修改为多页面支持的方法
- PHP使用debug_backtrace方法跟踪调试代码调用详解
- Python 实现数据结构中的的栈队列