C++ —— 类

目录

一、什么是类:

二、C++类的基本结构

三、类的格式

四、认识C++权限:

五、在类的外部进行成员函数的实现

六、类的组合:

七、函数重载



一、什么是类:

在C++中,类是一种用户定义的数据类型,它可以包含数据成员和成员函数。类是面向对象编程的基本概念之一,它可以用来表示现实世界中的实体和抽象概念。

二、C++类的基本结构

1、数据成员:定义类的属性。这些是类内部的变量,用于存储对象的状态。

2、成员函数:定义类的行为。这些是可以操作对象的数据成员的函数。 

 3、构造函数和析构函数

4、访问修饰符 

 5、继承

三、类的格式

class  Person     //类的名字都是大写字母开头的 

     {

           //数据成员

            string  name;          //在C++中字符串用string表示

            int  age;

    public:    

            //成员函数

           void setname()        //在类的内部构建

               {

                        name = lazy_sheep;            //在类的内部可以直接使用数据成员

               }

     };

四、认识C++权限:
public属性
访问权限类内部  同一个类的对象      派生类        类内部
public
private×××
protected××

案例:

银行案例

类:存款人信息

       账户额度

对象:具体的存款人

需求:

           对象不能私自更改账户额度,需要一个操作流程,比如去ATM机或者柜台进行操作才能修改到账户额度;

           存款人信息和账户额度设计成私有权限,通过公有流程实现,也就是公有函数去操作私有变量。

附示例代码:不想写了


五、在类的外部进行成员函数的实现

clPerson

     {

        public:

            //数据成员

           string name;

           int age;

           string sex;

           //成员函数

           void personMessage();     //声明成员函数

     };

//在类的外部进行成员函数的实现

vPerson::personMessage()

     {

           //(1) 用::确定personMessage()属于person类

           //(2)同一类的成员函数对于同一类的数据成员是可以直接访问的

     }

int main()

  {

         Person   happy_sheep;      创建对象

         Person   lazy_sheep;

      return 0;

  }

附示例代码:

/*
       本程序为验证C++中类数据成员、成员函数、权限使用
       验证在类的外部进行成员函数的实现
*/
#include <iostream>
#include <string>
using namespace std;

class Student
       {
            //public属性
            public:
           //数据成员
           string name;     //姓名
           string sex;      //性别
           int age = 0;         //年龄
           double result;   //成绩

           //成员函数
           void studentMessage();    //声明成员函数
       };

    //在类的外部进行成员函数的实现
void Student::studentMessage()      //::用于确认studentMessage属于student类
      {
           string str = "姓名:"+ name+"性别:"+ sex+"年龄:"+ std::to_string(age)
                   +"成绩:"+ std::to_string(result);
           cout << str << endl;
      }

int main()
    {
       Student sheep1;
       sheep1.name = "happy_sheep";
       sheep1.sex = "man";
       sheep1.age = 12;
       sheep1.result = 90.12;
       sheep1.studentMessage();

       Student sheep2;
       sheep2.name = "lazy_sheep";
       sheep2.sex = "man";
       sheep2.age = 10;
       sheep2.result = 90;
       sheep2.studentMessage();
        return 0;
    }



六、类的组合:

什么是类的组合:在C++中,一个类包含另一个类的对象成为组合。

1、定义一个对象(类的组合)

class Feature       //身体特征

     {

         public:

           float height;     //身高

           float weight;    //体重

     };

class Student

    {

      public:

         Feature sheep_weight;              //在另外一个类中创建对象(重点

    };

int mian()

  {

        //使用类的组合

        Student  sheep1;     //创建对象

        sheep1.sheep_weight.weight = 90.1;

           return 0;

  } 

附示例代码:

/*
       验证C++中类的组合(创建对象)
*/
#include <iostream>
#include <string>
using namespace std;

//身体特征
class Feature
       {
          public:
             float height;     //身高
             float weight;     //体重
       };

class Student
{
     //public属性
     public:
    //数据成员
    string name;     //姓名
    string sex;      //性别
    int age = 0;     //年龄
    double result;   //成绩
    Feature sheep_height;

    //成员函数
    void studentMessage();    //声明成员函数
};

    //在类的外部进行成员函数的实现
void Student::studentMessage()      //::用于确认studentMessage属于student类
      {
           string str = "姓名:"+ name+"性别:"+ sex+"年龄:"
                   + std::to_string(age)
                   +"成绩:"+ std::to_string(result)
                   +"身高"+std::to_string(sheep_height.height);
           cout << str << endl;
      }

int main()
    {
       Student sheep1;
       sheep1.name = "happy_sheep";
       sheep1.sex = "man";
       sheep1.age = 12;
       sheep1.result = 90.12;
       sheep1.sheep_height.height = 100;
       sheep1.studentMessage();

       Student sheep2;
       sheep2.name = "lazy_sheep";
       sheep2.sex = "man";
       sheep2.age = 10;
       sheep2.result = 90;
       sheep2.sheep_height.height = 91;
       sheep2.studentMessage();
        return 0;
    }

2、定义一个指针对象

注:如果在另外一个类里面创建指针对象是,需要先 new

class Feature       //身体特征

     {

         public:

           float height;     //身高

           float weight;    //体重

     };

class Student

    {

       public:

       Feature* sheep_weight   =  new Feature ();    //在另外一个类中创建指针对象(重点

    };

int mian()

  {

        //使用类的组合

        Student  sheep1;     //创建对象

        sheep1.sheep_weight->weight = 90.1;

           return 0;

  } 

附示例代码

/*
       验证C++中类的组合(创建指针对象)
*/
#include <iostream>
#include <string>
using namespace std;

//身体特征
class Feature
       {
          public:
             float height;     //身高
             float weight;     //体重
       };

class Student
{
     //public属性
     public:
    //数据成员
    string name;     //姓名
    string sex;      //性别
    int age = 0;     //年龄
    double result;   //成绩
    Feature* sheep_height = new Feature ();     //创建指针对象

    //成员函数
    void studentMessage();    //声明成员函数
};

    //在类的外部进行成员函数的实现
void Student::studentMessage()      //::用于确认studentMessage属于student类
      {
           string str = "姓名:"+ name+"性别:"+ sex+"年龄:"
                   + std::to_string(age)
                   +"成绩:"+ std::to_string(result)
                   +"身高"+std::to_string(sheep_height->height);
           cout << str << endl;
      }

int main()
    {
       Student sheep1;
       sheep1.name = "happy_sheep";
       sheep1.sex = "man";
       sheep1.age = 12;
       sheep1.result = 90.12;
       sheep1.sheep_height->height = 100;
       sheep1.studentMessage();

       Student sheep2;
       sheep2.name = "lazy_sheep";
       sheep2.sex = "man";
       sheep2.age = 10;
       sheep2.result = 90;
       sheep2.sheep_height->height = 91;
       sheep2.studentMessage();
        return 0;
    }

七、函数重载

1、什么是函数重载

在同一个作用域内,可以声明几个功能类似的同名函数。这些同名函数的形式参数(参数的个数,类型或者顺序)必须不同。不能仅通过返回类型的不同来重载函数。

附示例代码:

/*
      验证C++函数重载
*/
#include <iostream>

using namespace std;

class Print
   {
       public:
    void print(int num)
      {
           cout << num << endl;
      }
    void print(double num)
      {
           cout << num << endl;
      }
    void print(char c)
      {
           cout << c << endl;
      }
   };

int main()
{
    Print myPrint;
    myPrint.print(10);
    myPrint.print('A');
    myPrint.print(10.01);

    return 0;
}

八、运算符重载

什么是运算符重载

在C++中,运算符重载是一个允许程序员自定义各种运算符(如+ - =  !=等)在自定义类型(类或结构体)上的行为的特征。这意味着你可以定义类似内置类型的运算符行为,是你的自定义类型更加直观和易于使用。

附示例代码:

/*
       验证运算符重载

       operator关键字
*/
#include <iostream>

using namespace std;

class Coor
   {
      public:
       int x;
       int y;

       Coor operator+(Coor pTmp);
   };

Coor  Coor::operator+(Coor pTmp)
  {
      Coor ret;
      ret.x = x + pTmp.x;
      ret.y = y + pTmp.y;
      return ret;
  }


int main()
{
  Coor c1;
  c1.x = 3;
  c1.y = 4;
  Coor c2;
  c2.x = 1;
  c2.y = 2;
  Coor c3;

  c3 = c1 + c2;
  cout << "c3.x = " << c3.x << endl;
  cout << "c3.y = " << c3.y << endl;

    return 0;
}

九、初始化列表

在C++中,使用初始化列表来初始化类的字段景一种高效的切始化方式,尤具在构造函数中。初始化列表直接在对象的构造过程中初始化成员变量,而不是先创建成员变量后再赋值。这对于提高性能尤其重要,特别是在涉及到复杂对象或引用和常量成员的情况下。
初始化列表紧跟在构造函数参数列表后面,以需号(+)开始,后跟一个或多个初始化表达式,每个表达式通常用逗号分隔。

初始化列表创建方式 :

初始化列表紧跟在构造函数参数列表后面,以冒号(:)开始 ,后跟一个或多个初始化表达式,每个表达式通常用逗号分割。

举例如下:

class  Myclass

      {

            private:

               int   a;

               double   b;

               string   c;

            public:

            //使用初始化列表来初始化字段

             Myclass(int  x,double  y,const string&  z) : a(),b(),c()        

      };

解释:

(1)在本实例中,Myclass有三个成员变量:a(int  类型)、b(double  类型)、c(string  类型)。当创建Myclass的一个实例时,我们通过构造函数传递三个参数,这些参数用于通过初始化列表直接初始化成员变量。

(2)初始化列表     

                      :a(x),b(y),c(z)    

 意思为:       x   初始化   a

                      y   初始化   b

                      z   初始化   c

注:

         成员变量的初始化顺序是按照它们在类中声明的顺序,而不是初始化列表中的顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值