TreeMind树图在线AI思维导图
当前位置:树图思维导图模板资格考试计算机2020年全国计算机二级考试C++复习知识点:静态成员思维导图

2020年全国计算机二级考试C++复习知识点:静态成员思维导图

  收藏
  分享
免费下载
免费使用文件
催眠 浏览量:22023-04-10 17:25:20
已被使用0次
查看详情2020年全国计算机二级考试C++复习知识点:静态成员思维导图

2020年全国计算机二级考试报名已经开始,准备参加这次考试的小伙伴们接下来就要积极准备2020年的考试了。为此,树图网小编为大家整理了全国计算机二级考试C++复习知识点相关信息,希望能够帮助到大家,了解更多计算机二级考试相关信息敬请关注树图网。

树图思维导图提供 2020年全国计算机二级考试C++复习知识点:静态成员 在线思维导图免费制作,点击“编辑”按钮,可对 2020年全国计算机二级考试C++复习知识点:静态成员  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:dd8d9911bd6106f7ac9c969e84e2dd31

思维导图大纲

2020年全国计算机二级考试C++复习知识点:静态成员思维导图模板大纲

2020年全国计算机二级考试C++复习知识点:静态成员

可以把类的成员声明为静态的。静态成员只能存在唯一的实例。所有的成员函数都可以访问这个静态成员。即使没有声明类的任何实例,静态成员也已经是存在的。不过类当中声明静态成员时并不能自动定义这个变量,必须在类定义之外来定义该成员。

1.静态数据成员

静态数据成员相当于一个全局变量,类的所有实例都可以使用它。成员函数能访问并且修改这个值。如果这个静态成员是公有的,那么类的作用域之内的所有代码(不论是在类的内部还是外部)都可以访问这个成员。下面的程序通过静态数据成员来记录链表首项和末项的地址。

#include iostream.h

#include string.h

class ListEntry

public:

static ListEntry* firstentry;

private:

static ListEntry* lastentry;

char* listvalue;

ListEntry* nextentry;

public:

ListEntry(char*);

~ListEntry() { delete [] listvalue;}

ListEntry* NextEntry() const { return nextentry; };

void display() const { cout < };

ListEntry* ListEntry::firstentry;

ListEntry* ListEntry::lastentry;

ListEntry::ListEntry(char* s)

if(firstentry==0) firstentry=this;

if(lastentry!=0) lastentry- >nextentry=this;

lastentry=this;

listvalue=new char[strlen(s)+1];

strcpy(listvalue,s);

nextentry=0;

int main()

while (1)

cout <<\nEnter a name ('end' when done): ;

char name[25];

cin >>name;

if(strncmp(name,end,3)==0) break;

new ListEntry(name);

ListEntry* next = ListEntry::firstentry;

while (next != 0)

next- >display();

ListEntry* hold = next;

next=next- >NextEntry();

delete hold;

return 0;

程序首先显示提示信息,输入一串姓名,以end作为结束标志。然后按照输入顺序来显示姓名。构造函数将表项加入链表,用new运算符来声明一个表项,但并没有把new运算符返回的地址赋值给某个指针,这是因为构造函数会把该表项的地址赋值给前一个表项的nextentry指针。

这个程序和前面将的逆序输出的程序都不是最佳方法,最好的方法是使用类模板,这在后面再介绍。

main()函数取得ListEntry::firstentry的值,开始遍历链表,因此必需把ListEntry::firstentry设置成公有数据成员,这不符合面向对象程序的约定,因为这里数据成员是公有的。

2.静态成员函数

成员函数也可以是静态的。如果一个静态成员函数不需要访问类的任何实例的成员,可以使用类名或者对象名来调用它。静态成员通常用在只需要访问静态数据成员的情况下。

静态成员函数没有this指针,因为它不能访问非静态成员,所以它们不能把this指针指向任何东西。

下面的程序中,ListEntry类中加入了一个静态成员函数FirstEntry(),它从数据成员firstentry获得链表第一项的地址,在这儿,firstentry已经声明为私有数据成员了。

#include iostream.h

#include string.h

class ListEntry

static ListEntry* firstentry;

static ListEntry* lastentry;

char* listvalue;

ListEntry* nextentry;

public:

ListEntry(char*);

~ListEntry() { delete [] listvalue;}

static ListEntry* FirstEntry() { return firstentry; }

ListEntry* NextEntry() const { return nextentry; };

void display() const { cout < };

ListEntry* ListEntry::firstentry;

ListEntry* ListEntry::lastentry;

ListEntry::ListEntry(char* s)

if(firstentry==0) firstentry=this;

if(lastentry!=0) lastentry- >nextentry=this;

lastentry=this;

listvalue=new char[strlen(s)+1];

strcpy(listvalue, s);

nextentry = 0;

int main()

while (1)

cout <<\nEnter a name ('end' when done):;

char name[25];

cin >> name;

if(strncmp(name,end,3)==0) break;

new ListEntry(name);

ListEntry* next = ListEntry::FirstEntry();

while (next != 0)

next- >display();

ListEntry* hold = next;

next = next- >NextEntry();

delete hold;

return 0;

函数ListEntry::FirstEntry()是静态的,返回静态数据成员firstentry的值。

3.公有静态成员

如果一个静态成员象上面程序一样是公有的,那么在整个程序中都可以访问它。可以在任何地方调用公有景泰成员函数,而且不需要有类的实例存在。但公有静态成员函数不完全是全局的,它不仅仅存在于定义类的作用域内。在这个作用域里面,只要在函数名前加上类名和域解析运算符::就可以调用该函数。

相关思维导图模板

904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查思维导图

树图思维导图提供 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 在线思维导图免费制作,点击“编辑”按钮,可对 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10b9a8a2dd2fb4593f8130ef16c320fc

销售经理半年规划思维导图

树图思维导图提供 销售经理半年规划 在线思维导图免费制作,点击“编辑”按钮,可对 销售经理半年规划  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:e614d6bcf03e9318109240a18697c5d1