C++基础整理 —— 类 Class(5.1)

  • 类 Class

1. 定义:

  • 与结构体的区别:结构体类型(struct)定义的成员都是数据变量,如果把struct扩充为可以定义这些数据的行为,就是类(class);
  • 行为:就是可以处理类中数据的函数。故一个类主要包含数据成员(data member)和函数成员(function member );
  • 封装:这种将数据和函数放在一起的操作就成为封装(Encapsu-lation)。

2. 类的格式

#include <iostream>
using namespace std;

// 类
class person{
private:                              // 私有成员:数据成员
    int score1,score2;
public:                               // 公有成员:函数成员
    int sum(int a,int b)
    {score1=a;score2=b;return a+b;}   // 用法二,成员函数的定义,方法一:内部:显式定义
    int gets1();
}student1;                            // 用法一,对象的定义,方法一:直接写在类定义之后

// 成员函数
int person::gets1()
{return score1;}                      // 用法二,成员函数的定义,方法二:外部:显式定义

int main()
{
    int s,i;
    s=student1.sum(7,8);
    i=student1.gets1();
    cout << "s:" << s << " i:" << i << endl; // 15; 7
    person student2;                  // 用法一,对象的定义,方法二:以类名称person定义
    s=student2.sum(8,9);
    i=student2.gets1();
    cout << "s:" << s << " i:" << i << endl; // 17; 8
    person *student3=new person;       // 用法一,对象的定义,方法三:定义的是指向对象的指针
    s=student3->sum(1,2);              // 若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符 ;
    i=student3->gets1();
    cout << "s:" << s << " i:" << i << endl;// 3; 1

    return 0;
}

3. 定义类的对象:(与结构体类似)

  • 方法一:直接写在类定义之后;
  • 方法二:以类名称Student来定义;

注:C++把类的变量称为类的对象,对象也称为类的实例

若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符

4. 成员函数的用法:

  • 结构:
返回值类型 所属类名称::函数名称
{
   [函数主体];
}

例:
int person::gets1()
{return score1;}                           // 显式定义
  • 隐式定义:直接写到类的内部
// 类
class person{
private:
     int score1,score2;
public:
   int sum(int a,int b)    // 内部,隐式定义
   {score1=a;score2=b;return a+b;}
   int gets1()                         
   {return score1;}
};
  • 显式定义:直接写到类的外部
// 外部:显式定义
int person::gets1()
{return score1;} 
//  类
class person{
private:
     int score1,score2;
public:
    int sum(int a,int b); 
   {score1=a;score2=b;return a+b;}
   int gets1();
};
  • 区别:成员函数的写法和一般函数的写法类似,只是在函数名称前加上类名称双冒号(::)[作用域运算符]而已。

5. 代码

#include <iostream>
using namespace std;

// 类
class person{
private:                              // 私有成员:数据成员
    int score1,score2;
public:                               // 公有成员:函数成员
    int sum(int a,int b)
    {score1=a;score2=b;return a+b;}   // 用法二,成员函数的定义,方法一:内部:显式定义
    int gets1();
}student1;                            // 用法一,对象的定义,方法一:直接写在类定义之后

// 成员函数
int person::gets1()
{return score1;}                      // 用法二,成员函数的定义,方法二:外部:显式定义

int main()
{
    int s,i;
    s=student1.sum(7,8);
    i=student1.gets1();
    cout << "s:" << s << " i:" << i << endl; // 15; 7
    person student2;                  // 用法一,对象的定义,方法二:以类名称person定义
    s=student2.sum(8,9);
    i=student2.gets1();
    cout << "s:" << s << " i:" << i << endl; // 17; 8
    person *student3=new person;       // 用法一,对象的定义,方法三:定义的是指向对象的指针
    s=student3->sum(1,2);              // 若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符 ;
    i=student3->gets1();
    cout << "s:" << s << " i:" << i << endl;// 3; 1
    person mid,*student4;
    student4 = &mid;                    // 用法一,对象的定义,方法四:类似方法三
    s=student4->sum(3,4);
    i=student4->gets1();
    cout << "s:" << s << " i:" << i << endl;  // 7; 3

    return 0;
}

猜你喜欢

转载自blog.csdn.net/kongli524/article/details/88233223