C++类与对象

一、基础内容总结

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;

实现类成员函数:

<span style="font-family:SimSun;">返回值类型  类名::成员函数名(参数表)  
{  
          函数体  
} </span>

访问类成员:

<span style="font-family:SimSun;">对象成员的访问包括:  
       ●圆点访问形式:对象名.公有成员  
       ●指针访问形式</span>

*注意事项

1.类的成员可以是其他人的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员。2.类定义必须以分号“;”结束。3.类与结构体的区别:没有明确指定类成员的访问权限时,C++结构体的成员是公有的,而类的成员是私有的。

2.访问对象成员:

*对象是类的实例或实体;类与对象的关系,如同C++基本数据类型和该类型的变量之间的关系。

对象的定义(格式如下):

类名     对象1,对象2,.....,对象名n;

定义对象时应注意,必须在定义了类之后,才可以定义类的对象。

例如,访问对象的公有成员:

#include<iostream>  
using namespace std;  
class Tclass  
{ public:  
  int x,y;  
  void print()  
{ cout<<x<<","<<y;};  
};  
int main()  
{   Tclass test;  
    test.x=100;  
    test.y=200;  
    test.print();  
}  

*类成员的访问,对象成员的访问包括:

圆点访问形式:对象名.公有成员指针访问形式(对象指针变量名->公有成员


#include<iostream.h>  
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="<<x<<endl;  
     cout<<"y="<<y<<endl;  
 }  
private:                          //私有数据成员  
     float x,y;  
};  
int main()  
{  
     float a1,a2;  
     ptr_access *ptr=new ptr_access;  
         ptr->setvalue(2,8);        
      //通过指针访问公有成员函数  
     ptr->print();  
     a1=(*ptr).Getx();       
      //通过公有成员函数访问私有数据成员  
     a2=(*ptr).Gety();  
     cout<<"a1="<<a1<<endl;  
        cout<<"a2="<<a2<<endl;  
        return 0;  
}  

二).简单构造函数和析构函数

1.原型:

类名::类名(参数表);

类名::~类名();

例如,为类Date建立一个构造函数:

#include <iostream.h>
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<<year<<"."<<month<<"."<<day<<endl; } 

友元函数

如果在本类(类A)以外的其他地方定义了一个函数(函数B)
这个函数可以是不属于任何类的非成员函数,
也可以是其他类的成员函数,
在类体中用friend对其(函数B)进行声明,此函数就称为本类(类A)的友元函数。
友元函数(函数B)可以访问这个类(类A)中的私有成员
类的包含

构造函数 ( 形参表 ) : 对象成员1(形参表 ) , … , 对象成员n (形参表 ) ;

定义类

<span style="font-family:SimSun;">#include<iostream>
#include<string>
#include<algorithm>
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();
};   //必须加分号
</span>

学习心得

      通过这一段时间对这一章的学习,第一感觉就是本章内容较难理解,但通过老师的讲解,渐渐完成了思维由面向过程编译到面向对象设计,初步认知了设计管理系统,先通过对方需求来找到系统设计的初步框架,再从框架中的各个分类来细化需求,为需求分类。随着学习的不断深入,由程序的编译到软件的设计,会变得越来越复杂,越来越难,加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值