一、基础内容总结
1. 基础知识
类的定义:
类是对具有相同属性和行为的一组对象的抽象和统一描述。是用户自定义的数据类型。/类的定义包括行为和属性两部分。/属性以数据表示,行为通过函数实现。
C++类定义的一般形式为:
class<类名>
{
public:
公有段数据成员和成员函数;
protected:
保护段数据成员和成员函数;
private:
私有段数据成员和成员函数;
};
此处分号不可掉。
除了class以外,关键字struct也可以用于定义类。
例:一个日期类的说明如下:
class Date
{
public:
void SwtDate(int y,int m,int d);
int IsLeapYear();
void PrintDate();
private:
int year,month,day;
};
Date类有三个私有数据成员:year,month和day。Date还有三个公有成员函数:SetDate用于获取对象的值,设置日期;IsLeapYear用于判断是否是闰年;PrintDate函数用于输出日期。
由于隐藏数据是opp主要目标之一,数据项通常放在私有部分,组成类接口的成员函数放在公有部分;
不必要在类声明中使用关键字privat,因为这是类对象的默认访问控制;
public与private之间唯一的区别是,结构的默认访问类型是public,而类为prite;
实现类成员函数:
返回值类型 类名::成员函数名(参数表)
{
函数体
}
访问类成员:
对象成员的访问包括:
●圆点访问形式:对象名.公有成员
●指针访问形式
*注意事项
1.类的成员可以是其他人的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员。2.类定义必须以分号“;”结束。3.类与结构体的区别:没有明确指定类成员的访问权限时,C++结构体的成员是公有的,而类的成员是私有的。
*对象是类的实例或实体;类与对象的关系,如同C++基本数据类型和该类型的变量之间的关系。
对象的定义(格式如下):
类名 对象1,对象2,.....,对象名n;
定义对象时应注意,必须在定义了类之后,才可以定义类的对象。
例如,访问对象的公有成员:
#include
using namespace std;
class Tclass
{ public:
int x,y;
void print()
{ cout<
*类成员的访问,对象成员的访问包括:
圆点访问形式:对象名.公有成员和指针访问形式(对象指针变量名->公有成员)
#include
class ptr_access {
public:
void setvalue(float a, float b) { x=a; y=b; }
float Getx() {return x;}
float Gety() {return y;}
void print()
{
cout<<"x="<setvalue(2,8);
//通过指针访问公有成员函数
ptr->print();
a1=(*ptr).Getx();
//通过公有成员函数访问私有数据成员
a2=(*ptr).Gety();
cout<<"a1="<
类名::类名(参数表);
类名::~类名();
例如,为类Date建立一个构造函数:
#include
class Date {
public:
Date(); // 无参构造函数
Date(int y,int m,int d);
void showDate();
private:
int year, month, day;
};
Date::Date() // 构造函数的实现
{ year=0; month=0; day=0; }
Date::Date(int y,int m,int d)
{ year=y; month=m; day=d; }
inline void Date::showDate()
{ cout<
友元函数
构造函数 ( 形参表 ) : 对象成员1(形参表 ) , … , 对象成员n (形参表 ) ;
定义类
#include
#include
#include
using namespace std;
class student //类名称
{
string name;
int no;
int score[3]; //数据成员
float average;
int order;
public:
student(int id,string na,int x,int y,int z):name(na),no(id)
{
score[0]=x;
score[1]=y;
score[2]=z;
order=1,average=(score[0]+score[1]+score[2])/3;
}
student()
{
score[0]=score[1]=score[2]=0;
order=1,average=0;
}
int getNo(){return no;}
float getAverage(){return average;}
void setAverage(int avg){average=avg;} //成员函数
void setOrder(int x){order=x;}
int getOrder(){return order;}
string getName(){return name;}
void setName(string name){this->name=name;}
void display();
}; //必须加分号
学习心得
通过这一段时间对这一章的学习,第一感觉就是本章内容较难理解,但通过老师的讲解,渐渐完成了思维由面向过程编译到面向对象设计,初步认知了设计管理系统,先通过对方需求来找到系统设计的初步框架,再从框架中的各个分类来细化需求,为需求分类。随着学习的不断深入,由程序的编译到软件的设计,会变得越来越复杂,越来越难,加油。