C++面向对象编程基础知识介绍

发布时间:2024年01月17日

一、C++类和对象概念

类是对一系列具有相同性质的对象的抽象,它确定了这些对象共同的属性和行为。而对象则是类的实例,代表类的一个具体存在。类描述了所创建的对象的公共状态和行为,对象表示类的一个具体实例。

比如我们可以定义一个Student类,表示学生,该类的属性可以包括:

  • name:代表学生姓名
  • age: 代表学生年龄
  • score:代表学生分数

行为可以包括:

  • PrintInfo():打印学生信息
  • GetScore(): 获取学生成绩

而一个名叫Jack的学生就是Student类的一个对象实例。

通过类和对象的抽象表示,我们可以将学生的状态(属性)和行为(方法)统一归类,从而更好地对一群学生对象进行描述。

二、封装、继承和多态

除了类和对象,C++面向对象编程中还包含了三大特性:封装、继承和多态。

  1. 封装

封装指将对象的属性和行为组装起来,并只向外界暴露接口,而隐藏内部的实现细节。这样可以提高程序的可维护性、灵活性和可重用性。

在C++中通过public和private等访问修饰符来实现封装:

class Student {
  private:
   int score; // 成绩不希望外界访问

  public:
    void setScore(int s) {
      score = s;
    }  
    int getScore() {
      return score; 
    }
}
  1. 继承

继承是指新的类可以继承Parent类的方法和属性,新的类称为子类(Derived Class),Parent类称为基类(Base Class)。

继承可以让子类直接拥有parent类的成员,thus减少重复代码的编写,增强了代码的重用性。

例如我们让GradeOneStudent类继承Student类:

class Student {
  // ...
};

class GradeOneStudent : public Student {
  // 继承Student的属性和方法
};
  1. 多态

多态指一个类实例的相同方法在不同情形下有不同表现形式。

C++ 通过虚函数实现多态。虚函数是在基类中使用关键字 virtual 声明的函数。在继承类中重新定义该函数即可实现多态。例如:

class Base {
public:
  virtual void print() {
    cout << "Base print" << endl; 
  }
};

class Derived : public Base {
public:
  void print() { 
    cout << "Derived print" << endl; 
  }  
};

Base *p = new Derived(); 
p->print(); // 调用Derived的print方法,输出Derived print

三、C++类的构造和析构

类的构造函数(Constructor)和析构函数(Destructor)也是C++面向对象编程中很重要的两个概念。

构造函数是每次创建类新的对象实例时自动调用的函数。它主要用于为对象的成员变量设置初始值。

析构函数则是当对象结束其生命周期时自动执行的函数(如对象所在的函数执行结束时)。析构函数主要用于做一些清理工作。

C++类构造函数有以下特点:

  • 构造函数名称与类名称相同
  • 构造函数没有返回值,也不写void
  • 可以有参数,因此可以重载多个构造函数

示例如下:

class Student {

  public:
    string name; 
    int age;

    // 构造函数 
    Student(string name, int age) {
      this->name = name;  
      this->age = age;
    }
}

// 创建对象时会自动调用构造函数  
Student stu1("Jack", 16); 
Student stu2("Lucy", 15);

析构函数语法如下:

~类名() {
   // 清理工作
}

四、C++类的访问权限

C++支持设置类的成员变量和方法的访问权限。主要有三种访问权限:

  • public : 所有对象都可以访问
  • protected : 子类对象可以访问
  • private: 仅本类对象可以访问

如果不加修饰符,则默认为private访问权限。

设置访问权限的主要目的是避免数据被外界随意篡改,造成程序错误。

示例:

class Student {
  private:
    int score;
  
  public:
    void setScore(int s) {
      score = s;
    }   
    
    int getScore() {
      return score;
    }
}

Student stu;
stu.setScore(60); // 对外提供公共接口修改数据

五、C++类的定义和使用

定义一个类通常需要以下步骤:

  1. 使用class关键字定义类
  2. 在类中添加属性(成员变量)
  3. 添加方法(成员函数)
  4. 实现构造函数与析构函数(可选)
  5. 通过访问修饰符设置访问权限

例如定义Student类:

class Student
{
  private:
    string name;
    int age;
    int score;

  public:
    Student(string n, int a); 
    ~Student();  

    void printInfo();
    void setScore(int s);
    int getScore(); 
};

// 类外实现成员函数  
Student::Student(string n, int a) {
  name = n;
  age = a; 
}

void Student::setScore(int s) {
  score = s;  
}

// 创建并使用对象
int main() {

  Student stu1("Jack", 16);

  stu1.setScore(90);  
  stu1.printInfo();

  return 0;
}

总结来说,C++面向对象的主要思想就是将数据与操作数据的函数绑定起来,统一归类,使代码模块化,利于代码的重用和维护。

文章来源:https://blog.csdn.net/X_StarX/article/details/135646111
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。