C++题目,有大佬过来看看么 定义学生类。 (1)类名:STUDENT;

定义学生类。
(1)类名:STUDENT;
(2)静态属性:学号,姓名,成绩;
(3)动态属性:1.显示所有静态属性;2.修改学号;3.修改姓名;4.修改成绩。
(4)main函数里声明STUDENT对象,1.验证属性访问权限;2.调用各函数验证功能。

预备知识:

c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理。

通常我们在cpp文件中,完成函数的实现,然后在h中则是对于函数的声明,由于默认情况下,全局变量和全局函数存储类型都是extern类型的,所以我们不需要显示的使用extern

这样,我们其他的cpp文件,只要#include .h文件,则在cpp中实现的函数,就能在其他cpp中使用,因为我们已经用.h文件,完成了extern函数声明的操作。

c++类的定义,其实就是定义一个类型。

class A{

public:

void  fun(int n);

int   fun1(void);

public:

int  num;

};

其实就是定义了一种类型。和我们通常所说的定义不一样。

类的定义,是不能重复定义的,在同一个编译单元中,只能定义类一次。如果重复定义,会出错。同时类声明和类定义都是内部链接。只是为当前编译单元所用。

因此,把类的定义,放在.h文件中,类的实现放在专门的cpp中。这样包含.h的其他cpp,就可以使用cpp中实现的函数。。

同时注意:类的实现cpp文件的编译,必须依赖于类的定义文件.h,所以我们在类实现文件cpp中必须#include< ........h>,用于编译,否则会出错。这是不同于普通的函数。

//student.h                 (这是头文件,在此文件中进行类的声明)
class Student                            //类声明        
{ public:
void display( );                  
private:
int num; 
char name[20];     
char sex;                            
};
//student.cpp                            //在此文件中进行函数的定义
#include <iostream>
#include â€³student.h″                     
void Student∷display( )                 
{cout<<″num:″<<num<<endl;          
cout<<″name:″<<name<<endl; 
cout<<″sex:″<<sex<<endl;   
}
//main.cpp                            ä¸»å‡½æ•°æ¨¡å—
#include <iostream>
#include â€³student.h″                 
int main( )
{Student stud;                       
stud.display( );                     
return 0;
}

类中只有static成员变量。具有外部链接特性。所以这要求,static成员变量的初始化一定要在.Cpp文件中。如果在h文件中。那么多个cpp文件#include,则发生多次重复定义的错误。

类定义和类实现分离的好处:

1/快编译速度

当然可以啊。相反,如果你把类的所有代码都内联定义到头文件中,那么所有需要用到这个类的CPP文件实际上都包含了更多的代码,编译器编译每个这样的CPP文件时都编译了这些代码。而分开定义,这些代码就只被编译了一遍,也就是在编译实现那个类的CPP文件时。

在特殊情况下确实可以的
假如我有一个类a被几百个cpp同时包含,如果定义和声明放在一起,只要我对a进行任何修改,那几百个文件都必须被重新编译。而如果头文件只包含声明,修改a的实现不会导致那些文件被重新编译,有时可以极大的提高速度

在 C++ ä¸­ï¼Œç±»çš„定义方法如下:

class  ç±»å{
访问范围说明符:
成员变量1
成员变量2
成员函数声明1
成员函数声明2

访问范围说明符:
更多成员变量
更多成员函数声明
...
};

类的定义要以;结束。

“访问范围说明符”一共有三种,分别是 public、private 和 protected。三者的区别后面会详细介绍,目前暂且都用 public。“访问范围说明符”可以出现任意多次。

“成员变量”的写法与普通的变量定义相同。称其为成员变量,是因为这些变量是一个类的成员。

同样地,“成员函数声明”的写法也与普通的函数声明相同。

一个类的成员函数之间可以互相调用。类的成员函数可以重载,也可以设定参数的默认值。

以前所学的函数不是任何类的成员函数,可称为“全局函数”。

成员变量就代表对象的“属性”,成员函数就代表对象的“方法”。成员变量和成员函数出现的先后次序没有规定。

成员函数的实现可以位于类的定义之外,格式如下:

返回值类型  类名:函数名()
{
函数体
}


定义类之后,就可以定义对象了。定义对象的基本方法如下:

类名  对象名;

此处,“对象名”的命名规则和普通变量相同。对象也可以看作“类变量”

类的示例程序剖析

下面来看一个用面向对象的方法进行 C++ 程序设计的例子。

例题:编写一个程序,输入矩形的宽度和高度,输出其面积和周长。

这个程序比较简单,实际上根本不需要用面向对象的方法进行设计,这里只是为了使读者更容易理解类和对象的概念。

首先要做的事情是分析问题中有哪些“对象”。比较明显,只有“矩形”这种对象。然后要进行“抽象”,即概括“矩形”这种对象的共同特点。

矩形的属性就是宽度和高度。因此需要两个变量,分别代表宽度和高度。

一个矩形可以有哪些方法(即可以对矩形进行哪些操作)呢?在本程序中,矩形可以有设置宽度和高度、计算面积和计算周长三种行为,这三种行为可以各用一个函数实现,它们都会用到宽度和高度这两个变量。

“抽象”完成后,就可以用 C++ 提供的语法特性写出一个“矩形类”,将矩形的属性和方法“封装”在一起。程序如下:

#include <iostream>
using namespace std;
class CRectangle
{
public:
int w, h; //成员变量,宽和高
void init( int w_,int h_ ); //成员函数,设置宽和高
int area(); //成员函数, 求面积
int perimeter(); //成员函数,求周长
}; //必须有分号
void CRectangle::init( int w_,int h_ )
{
w = w_;  h = h_;
}
int CRectangle::area()
{
return w * h;
}
int CRectangle::perimeter()
{
return 2 * ( w + h);
}
int main( )
{
int w,h;
CRectangle  r;  //r是一个对象
cin >> w >> h;
r.init( w,h);
cout << "It's area is " << r.area() << endl;
cout << "It's perimeter is " << r. perimeter();
cout << sizeof(CRectangle) << endl;
return 0;
}

追问

老哥能直接围绕题目么。。。

追答class STUDENT
{
private:
char number[20];
char name[20];
float score;
public:
void STUDENT();
void ~STUDENT();
void display();
    void changenumber(char *number);
void changename(char *name);
void changescore(float score);
};追问

大佬能帮我看看哪里错了嘛

温馨提示:答案为网友推荐,仅供参考
相似回答