class Student
{
private:
int num;
char name[20];
char sex;
public:
void display( )
{
cout<<″num:″<
如果main()中用:
stud1.num=202019 × //num为私有成员,只能通过public中的函数进行调用
一、类声明和成员函数定义的分离 (文件的分离操作)
1.头文件--------进行类的声明
//student.h (这是头文件,在此文件中进行类的声明)
class Student //类声明
{ public:
void input(); //公用成员函数原型声明
void display( );
private:
int num;
char name[20];
char sex;
};
2.cpp文件---------进行函数的定义
//student.cpp //在此文件中进行函数的定义
#include
#include ″student.h″ //不要漏写此行,否则编译通不过
using namespace std;
void Student::display( ) //在类外定义display类函数
{cout<<"num:"<>num;
cin>>name;
cin>>sex;
}
3.main.cpp-------------进行主函数的定义
//main.cpp 主函数模块
#include
#include " student.h"
using namespace std; //将类声明头文件包含进来
int main( )
{Student stud;
stud.input(); //定义对象
stud.display( ); //执行stud对象的display函数
return 0;
}
二、构造函数
构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。构造函数的名字必须与类名同名,而不能由用户任意命名,以便编译系统能识别它并把它作为构造函数处理。它不具有任何类型,不返回任何值。构造函数的功能是由用户定义的,用户根据初始化的要求设计函数体和函数参数。
说明:
(1) 在类对象进入其作用域时调用构造函数。
(2) 构造函数没有返回值,因此也不需要在定义构造函数时声明类型,这是它和一般函数的一个重要的不同之点。
(3) 构造函数不需用户调用,也不能被用户调用。
(4) 在构造函数的函数体中不仅可以对数据成员赋初值,而且可以包含其他语句。但是一般不提倡在构造函数中加入与初始化无关的内容,以保持程序的清晰。
(5) 如果用户自己没有定义构造函数,则C++系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作。
class box
{
public:
box(int,int,int);
int volume();
private:
int height;
int width;
int length;
};
box::box(int h,int w,int len)
{
height=h;
width=w;
length=len;
}
int main()
{
box box1(3,4,5);
}
三、带参数的构造函数
构造函数首部的一般格式为
构造函数名(类型 1 形参1,类型2 形参2,…)
前面已说明: 用户是不能调用构造函数的,因此无法采用常规的调用函数的方法给出实参。实参是在定义对象时给出的。定义对象的一般格式为
类名 对象名(实参1,实参2,…);



