zoukankan      html  css  js  c++  java
  • 静态成员

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class Student
    {
    public:
    	Student(char *pName = "No name")
    	{
    		cout<<"create one student\n";
    		strcpy(name,pName);
    		cout<<name<<endl;
    		noOfStudent++;//静态成员:每创建一个对象,学生人数+1
    		cout<<noOfStudent<<endl<<endl;
    		pNext = pFirst;//每创建一个节点(对象),就把他挂在链首
    		pFirst = this;
    	}
    	~Student()
    	{
    		cout<<"destruct one student\n";
    		cout<<name<<endl;
    		noOfStudent--;//每析构一个对象,学生人数-1
    		cout<<noOfStudent<<endl<<endl;
    		if (pFirst == this)
    		{
    			//如果要删除链表结点,则只要链首指针指向下一个
    			pFirst = this->pNext;
    			return;
    		}
    		for (Student *pS = pFirst; pS; pS = pS->pNext)
    		{
    			if (pS->pNext == this)
    			{
    				//找到时,pS指向当前结点
    				pS->pNext = this->pNext;
    				return ;
    			}
    		}
    	}
    	//静态成员函数
    	static int number()
    	{
    		return noOfStudent;
    	}
    	static Student* FindName(char *pName)
    	{
    		for (Student *pS = pFirst; pS; pS = pS->pNext)
    		{
    			if (strcmp(pS->name,pName) == 0)
    			{
    				return pS;
    			}
    		}
    		return (Student*)0;//返回空指针
    	}
    protected:
    	static int noOfStudent;
    	static Student *pFirst;
    	Student *pNext;
    	char name[40];
    };
    
    //类声明只声明一个类的"尺寸与规格",并不进行实际的内存分配
    //静态数据成员在类声明外分配空间和初始化
    int Student::noOfStudent = 0;
    Student* Student::pFirst = 0;
    
    void fn()
    {
    	Student s1;
    	Student s2;
    	cout<<Student::number()<<endl;//调用静态成员函数用类名引导
    }
    
    Student* fn2()
    {
    	Student *pS = new Student("Jenny");
    	Student sb("Jone");
    	return pS;
    }
    
    
    
    int main()
    {
    	/*fn();
    	cout<<Student::number()<<endl;*/
    
    	/*Student sa("Jamsa");
    	Student *sb = fn2();
    	Student sc("Tracy");
    	delete sb;*/
    
    	Student s1("Randy");
    	Student s2("Jenny");
    	Student s3("Kinsey");
    	Student *pS = Student::FindName("Jenny");
    	if (pS)
    		cout<<"ok."<<endl;
    	else
    		cout<<"no find."<<endl;
    	return 0;
    }
    
  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/steady/p/1849178.html
Copyright © 2011-2022 走看看