文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>静态成员

静态成员

时间:2010-10-12  来源:Cranny

#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;
}
相关阅读 更多 +
排行榜 更多 +
我狙击打的贼准

我狙击打的贼准

飞行射击 下载
枪战突击

枪战突击

飞行射击 下载
其乐无穷

其乐无穷

飞行射击 下载