知识点

类静态数据成员
类静态成员函数 一、类静态数据成员
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一课里,我们主要讨论用类的静态成员来实现对象间的数据的共享。
静态数据成员的使用方法和注意事项如下:  
、静态数据成员在定义或说明时前面加关键字static。 
、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:   
 <数据类型><类名>::<静态数据成员名>=<值>
、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。  
、引用静态数据成员时,采用如下格式:  
 <类名>::<静态成员名> 二、类静态成员函数
静态成员函数内不能使用非静态类成员数据。
类成员函数可以独立使用。
可以使用类名+作用域解析符调用静态成员函数。如Tdate::staticFun();
最好把成员函数的实现放在.cpp里边,以防止重复定义。

头文件

class Tdate
{
private:
int test;
int fun();
public:
int year;//年
int month;//月
int day;//日
void setData(int y,int m,int d);
void printdate()const;
Tdate() ;//默认构造函数
Tdate(char*s);
Tdate(int y,int m,int d);
int GetTest() const;
void Tdate::setCount(int value);
static void staticFun(); //定义一个静态成员变量,用于存放类的实例化次数(对象个数)
static int count;
void SetTest(int v)
{
test=v;
}
Tdate* GetThis()
{
return this;//返回对象地址
}
friend int tfun(Tdate d1);
}; inline int Tdate:: GetTest() const
{ return test;
}

类实现文件

#include "stdafx.h"
#include "date.h" int Tdate::count=; //类静态成员初始化
void Tdate::setData(int y,int m,int d)
{
year=y;
month=m;
day=d; }
void Tdate::printdate() const
{ printf("%d:%d:%d\n",Tdate::year,Tdate::month,Tdate::day);
}
//默认构造函数
Tdate::Tdate()
{
//初始化代码 count++;//计数
printf("进入默认构造函数\n");
//Tdate::year=1990;
this->year=;
this->month=;
this->day=;
printf("this=%x \n",this); }
Tdate::Tdate(char*s)
{ count++;//计数
printf("%s",s);
year=;
month=;
day=;
}
//构造函数
Tdate::Tdate(int year,int month,int day)
{
//初始化代码
count++;//计数
printf("进入构造函数\n");
this->year=year;//y=y
this->month=month;
this->day=day;
printdate(); } int Tdate::fun()
{
return ;
} void Tdate::setCount(int value)
{
Tdate::count=value;
} void Tdate::staticFun() {
printf("%d",count);
}

类调用文件

// helloc++.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <malloc.h>
#include "date.h" int tfun(Tdate d1)
{ d1.fun();
int r=d1.test;
return ; } int _tmain(int argc, _TCHAR* argv[])
{
int b[]={,,};
// Tdate a(1999,1,19);
Tdate d1,d2;
printf("%d",Tdate::count);
Tdate::staticFun();
d2.printdate();
/* d2.setCount(7777);
d1.setCount(888); printf("d2.count=%d \n", Tdate.count);
printf("%x,%x ,%x",&d1.count,&d2.count ,&Tdate::count);*/ getchar();
return ;
}

mfc 类静态成员的更多相关文章

  1. 回调函数中使用MFC类的成员或对话框控件的简单方法

    在MFC的很多程序中,常常需要在回调函数中调用MFC类的类成员变量.类成员函数,亦或者对话框控件的句柄.由于回调函数是基于C编程的Windows SDK的技术,而类成员又有this指针客观条件限制.. ...

  2. C++类静态成员变量和const常量的初始化方法

    C++类静态成员变量和const常量在定义类的时候就必须初始化,否则都会编译出错. 而具初始化方法为: C++类静态成员变量初始化方法 #include <iostream> #inclu ...

  3. C++类静态数据成员与类静态成员函数

    from:://http://blog.csdn.net/taina2008/article/details/1684834 把类中的函数都定义成静态函数,这样相当于在编译时就分配了空间,这样不需要实 ...

  4. objectARX 关于MFC类向导 无法向此非CCmdTarget派生类添加任何命令 的解决方式

    objectARX 关于MFC类向导 无法向此非CCmdTarget派生类添加任何命令  的解决方式 图文By edata ,转载注明出处 http://www.cnblogs.com/edata 1 ...

  5. IE8与vs2005冲突 添加MFC类向导错误解决方法—— internet explorer脚本错误

    IE8 与 VS2005 冲突问题解决方法 问题表现为: MFC类向导添加类时,出现“当前页面的脚本发生错误”,进入MFC类向导后上方有一个小黄条“此网站的某个加载项运行失败.请检查"Int ...

  6. 《挑战30天C++入门极限》C++类静态数据成员与类静态成员函数

        C++类静态数据成员与类静态成员函数 在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢? ...

  7. VS建立可供外部调用的MFC类DLL,C#调用MFC调用

    建立MFC DLL工程.一般选共享MFC库 关键是在你生成的CPP中,添加外部调用的接口 如下,意思是将这个函数对外公开. 如果你希望对外提供类,就把这个方法做成工厂. 如果你希望对外提供MFC的窗体 ...

  8. c++ 类静态成员、非静态成员初始化

    1.静态成员初始化(不能在构造函数或初始化列表中初始化) 1.1 所有静态成员都可以在类定义之外初始化(通用),如下所示 class test { public: static int a; }; ; ...

  9. MFC类的结构

    1. CObject类,MFC库中绝大部分类的基类,封装了MFC中的最基本机制. 运行时类信息机制/动态创建机制/序列化机制等... 2. CCmdtarget - 消息映射机制最基类 3. CWin ...

随机推荐

  1. jenkins集成caliper"

    1.jenkins安装caliper-ci插件(Caliper CI Plugin) 2.编写microbench 最简便的办法就是作为单元测试来跑(这样就不用在jenkins里配置跑microben ...

  2. HBase Region分裂实现

    分裂策略 不同的分裂策略的实现需要继承RegionSplitPolicy,主要实现两个方法: shouldSplit()表示是否需要分裂 getSplitPoint()得到分裂点rowkey 从 HB ...

  3. 如何将同一 VNET 下的虚拟机从经典部署模型迁移到 Azure Resource Manager

    本文内容 适用场景 解决方案 适用场景 用户拥有多个云服务但是在同一个 VNET 下,希望将这些虚拟机从经典部署模型(以下简称:ASM)迁移到 Azure Resource Manager(以下简称: ...

  4. [VS2008] [.NET 3.5] 如何解决 The imported project "C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.CSharp.targets" was not found

    重新安装或者修复 NETCFv35PowerToys https://download.microsoft.com/download/f/a/c/fac1342d-044d-4d88-ae97-d27 ...

  5. 纲举目张:打通MySQL架构和业务的任督二脉

    目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式.从数据库的业务需求.架构设计.运营维护.再到扩容迁移,不同的MySQL架构有不同的特点,适应一定的业务场景,或者解 ...

  6. iOS设计模式 - 备忘录

    iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态 ...

  7. [UI] 精美UI界面欣赏[8]

    精美UI界面欣赏[8]

  8. Linux 系统的/etc目录

    /etc目录下的重要文件 /etc/sysconfig/network 指定服务器上的网络配置信息 /etc/rc.d/init.d/network 网络配置脚本信息 网络配置脚本,开机通过脚本文件来 ...

  9. Linux----CentOS-7搭建免流服务器(iOS 端)

    本次实验采用腾讯云服务器:https://cloud.tencent.com/ 大学生身份的可以看看有没有什么活动购买 其他身份的78一个月 关于腾讯云服务器的使用可以看看腾讯云的使用手册 本博客涉及 ...

  10. SDN2017 第一次作业

    作业链接 阅读LearningNetworkProgramming.pdf,思考后回答以下问题: 你会选择作 网络编程 方向的程序员吗?为什么? 请搜寻并列出至少3个有影响力的中英文SDN的门户网站. ...