当前位置: 首页 > news >正文

河南创达建设工程管理有限公司网站销售平台

河南创达建设工程管理有限公司网站,销售平台,有什么做兼职的医疗网站,百度引擎搜索网址在C中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。 静态成员的定义或声明要…

        在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。

静态成员的定义或声明要加个关键static。静态成员可通过双冒号来使用<类名>::<静态成员名>。

        在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个实例来加深印象。希望阅读本文可以使读者对类的静态成员变量和成员函数有更为深刻的认识。

例1:

class Point{
public:
void init(){
//...}static void output(){
//...}
};int main(){Point::init();    //作用域调用非静态成员函数Point::output();    //作用域调用静态成员函数return 0;
}

编译出错:error C2352: 'Point::init' : illegal call of non-static member function

结论1:不能通过类名来调用类的非静态成员函数。

正确写法为以下代码:

class Point {
public:void init() {//...}static void output() {//...}
};int main() {Point p1;        //实例化对象p1.output();     //只能通过对象调用非静态函数Point::output();    //作用域调用静态成员函数return 0;}

编译通过。

结论2:类的对象可以使用静态成员函数和非静态成员函数。

例2:

#include <stdio.h>
class Point{public:void init(){}static void output(){printf("%d ", m_x);        //err}private:int m_x;};int main()Point pt;pt.output();return 0;
}

        编译出错:error C2597: illegal reference to data member 'Point::m_x' in a static member function

        因为静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用它一样。

结论3:静态成员函数中不能引用非静态成员。

例3:

class Point{public:void init(){output();}static void output(){}
};int main(){Point pt;pt.output();return 0;}

编译通过。

结论4:类的非静态成员函数可以调用用静态成员函数,但反之不能。

例4:

class Point{public:Point(){m_nPointCount++;}~Point(){m_nPointCount--;}static void output(){printf("%d ", m_nPointCount);}private:static int m_nPointCount;
};int main(){Point pt;pt.output();return 0;        
}

编译错误!

        这是因为类的静态成员变量在使用前必须先初始化。在main()函数前加Point::m_nPointCount = 0;  再编译链接无错误,运行程序将输出1。

改正:

class Point {
public:Point() {m_nPointCount++;}~Point() {m_nPointCount--;}static void output() {printf("%d ", m_nPointCount);}
private:static int m_nPointCount;};
//类静态成员变量初始化赋值
int Point:: m_nPointCount = 0;int main() {Point pt;pt.output();return 0;
}

编译+运行通过

结论5:类的静态成员变量必须先初始化再使用。

总结:

结论1:不能通过类名来调用类的非静态成员函数。

结论2:类的对象可以使用静态成员函数和非静态成员函数。

结论3:静态成员函数中不能引用非静态成员。

结论4:类的非静态成员函数可以调用用静态成员函数,但反之不能。

结论5:类的静态成员变量必须先初始化再使用。

 

http://www.wangmingla.cn/news/165607.html

相关文章:

  • 现在做网站用什么软件长沙seo霸屏
  • 多媒体网站开发湖人最新排名最新排名
  • 最专业的礼品网站案例参考seo的最终是为了达到
  • 在美国做网站如何接入收款工具长尾关键词在线查询
  • 江宁外贸网站建设艺考培训学校
  • 做网站赌博的推广是不是犯罪的如何找外链资源
  • 网站建设解决方案建设网站推广
  • 移动网站模板推广网站seo
  • 临邑云速网站建设新闻类软文营销案例
  • 晋城有做网站的吗小红书seo是什么意思
  • 滑县网站建设服务360开户
  • wordpress 提示插件安装百度seo和sem的区别
  • 昆山科技网站建设百度seo排名优化价格
  • 虚拟网站官网2023年最新新闻简短摘抄
  • 微信公众号怎么做成微网站西安新站网站推广优化
  • 网站没收录可以做排名网站入口百度
  • 宁德时代网站哪个公司做的广告宣传费用一般多少
  • wordpress教程 主页seo优化推广公司
  • html5做视频网站杭州seo网
  • 绵阳建网站提高网站流量的软文案例
  • 免费公司企业建站代理刷神马seo排名首页排名
  • 用什么软件可以制作图片seo排名赚app
  • 媒体发稿网站开发大数据精准营销获客
  • 平度做网站seo搜索引擎优化求职简历
  • 团购网站开发需要多久win7优化大师下载
  • 鸟人 网站建设搜索引擎优化概述
  • 做企鹅号的视频素材网站北京seo
  • 做游戏动画外包网站seo公司排名
  • php网站开发技术百度 站长工具
  • 黄江镇做网站优化网站有哪些方法