面向对象的程序设计学习笔记-17-静态成员数据
2013-01-14 14:47
477 查看
/*
静态成员包含静态数据成员和静态成员函数
一旦指定为static,不管该类创建多少个对象,静态数据成员都只有一个静态数据值。
因此,静态数据成员是该类所有对象共享的成员,也是连接该类中不同对象的桥梁
*/
#include<iostream>
using namespace std;
class counter
{
public:
static long count_l;//公有静态数据成员
counter(char c);//构造函数,令数据成员count自增
counter();//无参数的构造函数
static int home();//静态成员函数,读静态数据成员count的值
int read_ch_int();
char read_ch();
long get_count_l();//读取count_l数据成员
~counter();//析构函数
private:
static int count;//私有静态数据成员
char ch;
};
counter::counter(char c)//每调用一次构造函数,count则自加1。所以静态数据成员常用以记录某个类所创建的对象个数
{
count++;ch=c;
}
counter::counter()
{
count_l++;
}
int counter::home()//该函数为静态成员函数。读取count的值
{
return count;
}
int counter::read_ch_int()//请注意,此处的ch类型与函数的返回类型是不一样的
{
return ch;//返回的是字符型所对应的ASII码。比如a,ch=a则返回的是97
}
char counter::read_ch()//当返回的函数值与ch的类型一致时,c1(1)中的“1”是一ASII码进行显示的
{
return ch;//返回的是字符型所对应的ASII码。比如a,ch=a则返回的是97
}
long counter::get_count_l()
{
return count_l;
}
counter::~counter()
{
count--;ch=0;//析构函数,令count值减1,同时使得ch值为0
count_l--;
}
int counter::count=100;//静态数据成员的初始化
long counter::count_l=5;//静态公有数据成员的初始化
void main()
{
counter c0('a'),c1(1),c2(2),c3(3),c4(4);
cout<<"counter当前的值:"<<counter::home()<<endl;//对于静态函数的操作,因为它不属于某个对象,它是属于类的
cout<<"对象0:"<<c0.read_ch()<<endl;
cout<<"对象1:"<<c1.read_ch()<<endl;
cout<<"对象2:"<<c2.read_ch()<<endl;
cout<<"对象3:"<<c3.read_ch()<<endl;
cout<<"对象4:"<<c4.read_ch()<<endl;
cout<<"请注意输出结果的对比:\n";
cout<<"对象0:"<<c0.read_ch_int()<<endl;
cout<<"对象1:"<<c1.read_ch_int()<<endl;
cout<<"对象2:"<<c2.read_ch_int()<<endl;
cout<<"对象3:"<<c3.read_ch_int()<<endl;
cout<<"对象4:"<<c4.read_ch_int()<<endl;
}
静态成员包含静态数据成员和静态成员函数
一旦指定为static,不管该类创建多少个对象,静态数据成员都只有一个静态数据值。
因此,静态数据成员是该类所有对象共享的成员,也是连接该类中不同对象的桥梁
*/
#include<iostream>
using namespace std;
class counter
{
public:
static long count_l;//公有静态数据成员
counter(char c);//构造函数,令数据成员count自增
counter();//无参数的构造函数
static int home();//静态成员函数,读静态数据成员count的值
int read_ch_int();
char read_ch();
long get_count_l();//读取count_l数据成员
~counter();//析构函数
private:
static int count;//私有静态数据成员
char ch;
};
counter::counter(char c)//每调用一次构造函数,count则自加1。所以静态数据成员常用以记录某个类所创建的对象个数
{
count++;ch=c;
}
counter::counter()
{
count_l++;
}
int counter::home()//该函数为静态成员函数。读取count的值
{
return count;
}
int counter::read_ch_int()//请注意,此处的ch类型与函数的返回类型是不一样的
{
return ch;//返回的是字符型所对应的ASII码。比如a,ch=a则返回的是97
}
char counter::read_ch()//当返回的函数值与ch的类型一致时,c1(1)中的“1”是一ASII码进行显示的
{
return ch;//返回的是字符型所对应的ASII码。比如a,ch=a则返回的是97
}
long counter::get_count_l()
{
return count_l;
}
counter::~counter()
{
count--;ch=0;//析构函数,令count值减1,同时使得ch值为0
count_l--;
}
int counter::count=100;//静态数据成员的初始化
long counter::count_l=5;//静态公有数据成员的初始化
void main()
{
counter c0('a'),c1(1),c2(2),c3(3),c4(4);
cout<<"counter当前的值:"<<counter::home()<<endl;//对于静态函数的操作,因为它不属于某个对象,它是属于类的
cout<<"对象0:"<<c0.read_ch()<<endl;
cout<<"对象1:"<<c1.read_ch()<<endl;
cout<<"对象2:"<<c2.read_ch()<<endl;
cout<<"对象3:"<<c3.read_ch()<<endl;
cout<<"对象4:"<<c4.read_ch()<<endl;
cout<<"请注意输出结果的对比:\n";
cout<<"对象0:"<<c0.read_ch_int()<<endl;
cout<<"对象1:"<<c1.read_ch_int()<<endl;
cout<<"对象2:"<<c2.read_ch_int()<<endl;
cout<<"对象3:"<<c3.read_ch_int()<<endl;
cout<<"对象4:"<<c4.read_ch_int()<<endl;
}
相关文章推荐
- 面向对象的程序设计学习笔记-18-静态数据成员实例
- 面向对象的程序设计学习笔记-19-静态成员函数的使用
- 面向对象的程序设计学习笔记-21-常量数据成员的定义和初始化
- 【对象数组+静态数据成员+静态成员函数+...】面向对象程序设计(B)——第二次作业
- C++primer学习笔记----面向对象程序设计(1)
- PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
- 面向对象的程序设计-学习笔记-24-虚基类的例题补充
- 面向对象与C++程序设计-类的继承与派生学习笔记
- C++基础学习笔记----第十一课(类的静态成员、对象模型初步认识)
- C++primer学习笔记----面向对象程序设计(1)
- PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
- 面向对象的程序设计-学习笔记-22-派生类
- C++ 学习笔记(15)面向对象程序设计(类、继承、虚函数、抽象类、using命令、容器与继承)
- Java学习笔记17(面向对象十:综合案例)
- C++primer学习笔记----面向对象程序设计(1)
- PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
- JavaScript基础学习笔记(四) ---面向对象的程序设计
- JAVA学习笔记(二)-面向对象程序设计
- C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)
- 面向对象的程序设计1 理解对象—— JS学习笔记2015-7-4(第75天)