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;
    }
    
  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/steady/p/1849178.html
Copyright © 2011-2022 走看看