mfc 类静态成员
2024-10-17 08:52:45
知识点 类静态数据成员
类静态成员函数 一、类静态数据成员
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一课里,我们主要讨论用类的静态成员来实现对象间的数据的共享。
静态数据成员的使用方法和注意事项如下:
、静态数据成员在定义或说明时前面加关键字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 ;
}
最新文章
- 从零开始,搭建博客系统MVC5+EF6搭建框架(3),添加Nlog日志、缓存机制(MemoryCache、RedisCache)、创建控制器父类BaseController
- Spark相关下载
- 【转】安装mysql 出现:Fatal error: Can&#39;t open and lock privilege tables: Table &#39;mysql.user&#39; doesn&#39;t exist
- PHP入门part4
- MMS源码中异步处理简析
- Python 学习笔记01
- JS练习题 显示登入者相关好友
- [设计模式]NetworkManagementService中的观察者模式
- gulp解决RequireJS
- yui--datatable 行添加格式
- 西门子PLC学习笔记二-(工作记录)
- Nginx实现负载均衡&;Nginx缓存功能
- Java中instanceof关键字的用法
- 重磅!!!微软发布.NET Core 2.2
- vue中的 ref 和 $refs
- 关于ajax的与后台Controller的交互 后台拿不到值
- webpack学习--安装
- php单元测试
- 【题解】Luogu P2057 [SHOI2007]善意的投票
- Django 访问admin提示ViewDoesNotExist at /admin/
热门文章
- SQLSERVER2012里的扩展事件初尝试(上)
- Coroutine及其实现
- python相关知识/技巧文摘
- asp.net 一般处理程序实现网站验证码
- mysql常见问题总结
- 我的第一个springboot应用+maven依赖管理
- September 27th 2017 Week 39th Wednesday
- 【websocket-sharp】使用
- virtualbox+vagrant学习-2(command cli)-24-Aliases别名
- jQuery.fn.extend()