C++有关静态成员的程序

C++有关静态成员的程序,第1张

总人数是按照对象个数设置的,其他的都应该没什么问题了:

#include<iostream.h>

#include<string.h>

class student{

public:

student(char * nu = NULL,char * na= NULL,float s= 0)

set(char * nu,char * na,float s)

~student()

void show()

private:

char * number

char * name

float score

static int count

static float sum

static float ave

}

int student::count=0

float student::sum=0.0

float student::ave=0.0

void main()

{

float s

char link

char nu[20]

char na[20]

student h[10]

int i

cout<<"请输入Y,然后按Enter进行输入学生信息"<<endl

cout<<"输入N结束"<<endl

cin>>link

for (i = 0i <10 &&link=='Y'i ++)

{

cout<<"请输入学号,姓名,成绩:"<<endl

cin>>nu

cin>>na

cin>>s

h[i].set(nu,na,s)

h[i].show()

cout<<"请输入Y,然后按Enter进行输入学生信息"<<endl

cout<<"输入N结束"<<endl

cin>>link

}

}

student::student(char * nu,char * na,float s)

{

if (nu != NULL)

{

number=new char[strlen(nu)+1]

strcpy(number,nu)

}

else

number = NULL

if (na != NULL)

{

name=new char[strlen(na)+1]

strcpy(name,na)

}

else

name = NULL

score=s

count++

sum=sum+score

ave=sum/count

}

student::set(char * nu,char * na,float s)

{

if (name != NULL)

delete []name

if (number != NULL)

delete []number

sum=sum-score

number=new char[strlen(nu)+1]

strcpy(number,nu)

name=new char[strlen(na)+1]

strcpy(name,na)

score=s

sum=sum+score

ave=sum/count

}

student::~student()

{

delete []name

delete []number

count--

sum=sum-score

ave=sum/count

}

inline void student::show()

{

cout<<"学生信息如下:"<<endl

cout<<"学号:"<<number<<endl

cout<<"姓名:"<<name<<endl

cout<<"成绩:"<<score<<endl

cout<<"学生人数:"<<count<<endl

cout<<"总成绩:"<<sum<<endl

cout<<"平均成绩:"<<ave<<endl

}

要看static的效果要用两个文件

static修饰的函数只能在本文件内使用。

新建一个文件 add.c

内容:

void add(int add1,int add2)

{

return add1+add2

}

再新建一个文件test.c

内容:

#include<stdio.h>

extern int add(int add1,int add2)

void main()

{

int sum

sum=add(3,4)

printf("sum=%d",sum)

}

测试会发现输出了7,调用成功,。

如果add.c

的内容是:

static void add(int add1,int add2)

{

return add1+add2

}

后面加了关键字static后调用就会失败,,

因为加了static的函数只能在本文件中使用不能被别的文件引用

很简单。代码:int

count::n=0是将static变量的n初始化为0。代码count::test()调用了count类中的test函数,此函数中,n被用

for循环语句

自加了4次,所以会显示“4”。然后又建立了c1、c2两个count类的变量,这时,count类中的

构造函数

count()会执行2次,由于是

静态变量

,故n在4的基础上又加了2,是6,这时,有用了cout<

评论

0

0

加载更多


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8166301.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存