类数据成员

3.7.1   类数据成员

例3-35

本例举例说明了声明静态成员的语法。Task类的数据成员n与Task类本身相关,与任何Task对象无关。由于n是静static,它对整个Task类而言只有一个,而不是每个Task对象都有一个n。图3-6展示了类c,它拥有一个非static数据成员x和一个static数据成员s。

我们可以利用n来确定当前存在的Task对象的数量,为此我们对Task类的构造函数和析构函数作如下修改:

假定static数据成员n初始化为0,则n就会将运行时Task对象的数量保存下来。

如例3-35所示,static数据成员在类声明的内部声明,同时static数据成员还需进行定义。

例3-36

 

本例修改了例3-35,增加了对static数据成员n的定义。正如以上代码所示,在类声明内部声明的static数据成员必须在任何程序块之外定义。请注意数据成员的名称是Task::n而不是n。我们将Task::n初始化为0,但这不是必需的,因为在所有程序块之外定义的任何变量都将自动地初始化为0,除非编程人员提供一个不同的初值。

static数据成员不会影响该类及其对象的sizeof。

例3-37

在系统中表达式sizeof(C)和sizeof(c1)的值都是16。如果将类声明做如下修改:

这两个sizeof表达式仍然等于16,这是因为static数据成员不影响该类与类对象的sizeof。

类数据成员

时间: 2024-10-05 14:14:08

类数据成员的相关文章

访问属性与类数据成员

1 class Employee 2 { 3 public string EmpId { get; set; }//类属性 4 public string mstrEmpId;//类数据成员 5 } 使用访问器的好处:你可以修改方法的实现部分,如下面的代码范例显示,将所有业务员工的编号前方加上“S”字符串,你可修改属性实现部分的代码,而不影响到访问属性的语法: 1 class Employee 2 { 3 private string empId;//类数据成员 4 public string

类数据成员和类成员函数

一.类成员: 1.数据成员和成员函数都是属于对象的. 2.C++支持另外一种类型的成员,这种成员属于类本身,而不属于类对象,我们称之为类成员. 3.使用关键字static可以创建一个类成员. 4.在类声明内部声明的static数据成员必须在任何程序块之外定义. 5.static数据成员不影响类与类对象的sizeof. 二.类成员函数 1.static静态成员函数只可以访问其他的static数据成员和成员函数. 2.非static成员函数既可以访问static数据成员,也可以访问非static数据

第十一周实践项目2.2-储存班长信息的学生类(如果将基类数据成员改为私有的)

/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月6日 *版 本 号:v1.0 * *问题描述:请完成类中成员函数的定义 *输入描述: *程序输出:学生的信息 */ #include <iostream> using namespace std; class Stu { public: Stu(int n,string nam); void display();

C++拾遗--类成员指针

C++拾遗--类成员指针 前言 类成员的类型与一般类型不同,那么类成员的指针类型自然与一般类型的指针有所区别.我们有必要来探讨下类成员指针的使用. 正文 类成员指针是指可以指向类的非静态成员的指针.它的类型包括了类类型和所指向的成员类型.一般而言,指针指向的是对象,而类成员指针指向的是类成员而非类对象. 需要指出,类成员指针不是可调用对象,要想通过类成员指针调用类成员,需结合类对象或类指针.静态类型成员属于类,类型与普通指针相似. 数据成员指针 一般的声明形式: 成员类型 classname::

C++的类成员和类成员函数指针

类成员函数指针: 用于访问类成员函数,和一般函数指针有区别. 类成员函数处理的是类数据成员,声明类成员函数指针的同时,还要指出具体是哪个类的函数指针才可以.调用时也要通过对象调用. 而对于类的静态成员函数,它是类对象共享的,且只能处理静态数据成员,所以它的函数指针可以类似一般函数指针一样使用. 1 class Test 2 { 3 public: 4 void fun(int); 5 void fun(int) const; //重载函数,加一个const限制 6 static void fun

Java基础09 类数据与类方法(转载)

我们一直是为了产生对象而定义类(class)的.对象是具有功能的实体,而类是对象的类型分类.这是面向对象的一个基本概念. static数据成员 有一些数据用于表述类的状态.比如Human类,我们可以用“人口”来表示Human类的对象的总数.“人口”直接描述类的状态,而不是某个对象. 类的所有对象共享“人口”数据.这样的数据被称为类数据成员(class field). 在类定义中,我们利用static关键字,来声明类数据成员,比如: class Human{    public Human(int

类成员和对象成员

3.7   类数据成员和类成员函数 到目前为止,我们所看到的数据成员和成员函数都是属于对象的.比方说,我们在3.6节定义了Task类,如果我们用Task类定义如下两个对象: 那么,这两个对象都拥有各自的id.st.ft和logFile数据成员.C++还支持另外一种类型的成员,这种成员属于类本身,而不属于类的对象,我们称之为类成员(class member),而将属于对象的成员称为对象成员(object member)或实例成员(instance member).使用关键字static就可以创建一

C/C++ 类成员函数指针 类成员数据指针

普通函数指针:  "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*ptr_name)(para_types)" 类数据成员指针: "type class_name::* ptr_name"; C/C++: 1 class Demo 2 { 3 public: 4 Demo():data(100) 5 { 6 7 } 8 int data; 9 i

为什么通过空指针(NULL)能够正确调用类的部分成员函数

#include <iostream> using namespace std; class B { public: void foo() { cout << "B foo " << endl; } void pp() { cout << "B pp" << endl; } void FunctionB() { cout << "funB" << endl; }