博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC中静态变量Static
阅读量:5929 次
发布时间:2019-06-19

本文共 1604 字,大约阅读时间需要 5 分钟。

vc中没有强制的数据类型间转换,java和C都有的:

例如:vc中:

                 int a=0xfffe;    //即65534

                 char b=a;        编译不出错

                 str.Format("%d",b);

      MessageBox(str);   //结果为-2

java中:

       int a=0xfffe;    //即65534

                  byte b=a;      编译出错,需要改成byte b=(byte)a

  静态变量(static).静态变量之所以是因为静态,是因为他在整个程序生命周期的地址静止不变。也就是说在整个程序里面只保存有一份拷贝。static关键字允许它在不同的函数调用间保持它的值。如果一个静态变量被访问后值改变,它就会保持新的值。如果这变量再次被访问,它将会维持最新的值
class Test1{public:       static  int a;       const int b;       Test1():b(10){         }void print1(){               a++;               printf("%d,%d\n",a,b);       }};int Test1::a=10;void main(){       Test1 t1;       t1.print1();       Test1 t2;       t2.print1();       Test1 t3;       t3.print1();}

结果:11    12     13

在c++中,static静态成员变量不能在类内部初始化。int Test1::a=10;

在c++中,const常量成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。在构造函数中初始化都不行

 

C++中常见的关键字含义:

1. inline:定义内联函数,该关键字是基于定义,如果只在函数声明时给出inline,则函数不会被认为是内联函数,所以必须在函数定义的地方也加上inline,同时inline只是向编译器建议函数以内联函数处理,不是强制的。

2. const:定义常成员,包括const数据成员和const成员函数,const数据成员必须,也只能通过构造函数的初始化列表进行初始化,const成员函数只能访问类的成员,不能进行修改,如果需要修改,则引入下面的mutable关键字。

3.mutable:这个关键字的引入是解决const成员函数要修改成员变量,通常而言,const成员函数只能访问成员变量,不能修改,但是如果成员变量被mutable修饰了,则在const成员函数中可以修改该变量。mutable和const不能同时用于修饰成员变量。

4. static:声明静态成员,包括静态数据成员和静态成员函数,它们被类的所有对象共享,静态数据成员在使用前必须初始化,而静态成员函数只能访问静态数据成员,不能访问非静态数据成员,因为该函数不含有this指针。

5. virtual:声明虚函数,用于实现多态,该关键字是基于声明的。

6. friend:声明友元函数和友元类,该关键字也是基于声明的。

7. volatile:被该关键字修饰的变量是指其值可能在编译器认识的范围外被修改,因此编译器不要对该变量进行的操作进行优化。可以与const同时修饰一个变量。

 

为什么需要const成员函数?

  我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员(普通成员),,对常对象和常量进行访问。也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。

转载地址:http://mdevx.baihongyu.com/

你可能感兴趣的文章
新内核的编译和安装
查看>>
IBM DS3512 驱动器冗余路径丢失,清除链路噪音的解决方案shangxl@dc
查看>>
LVS+keepalived
查看>>
vmware workstation网络设置
查看>>
Linux 内核参数设置于详解 --Oracle 安装
查看>>
检查常用软件的编译参数
查看>>
正则表达式的效率与优化
查看>>
正则表达式口诀及教程[快速记忆正则语法]
查看>>
【Android】Android开发点击查看手机电量的小功能。学习广播的一个小技能小Demo...
查看>>
如何查看文件大小--linux的L命令
查看>>
$(function(){})和$(document).ready(function(){})
查看>>
北邮-上机题型总结-九度练习
查看>>
使用expect实现shell脚本中scp,ssh自动输入口令
查看>>
yum
查看>>
MyEclipse6.5 注册码生成方法,自己输入用户名
查看>>
自定义编译安装python简单笔记。
查看>>
Beetl-Spring扩展文档
查看>>
hibernate批量导入性能问题
查看>>
FxCop代码标准检测工具
查看>>
psCS6图片文件无法直接拖入的解决方法
查看>>