21xrx.com
2024-11-22 09:51:22 Friday
登录
文章检索 我的文章 写文章
跟着C++学案例-(后篇)
2023-06-22 10:27:24 深夜i     --     --
C++ 学习案例 后篇 编程 实践

在前篇中,我们学习了C++的基础语法和一些常见的数据结构,如数组、字符串等。在本篇中,我们将进一步探讨C++的高级用法,并通过实例来更好地理解。以下是本篇文章将要讲解的内容:

1. 类和对象

2. 继承与多态

3. 模板

4. 异常处理

一、类和对象

类是C++中的重要组成部分,它是一种包括数据成员和成员函数的用户定义数据类型。对象则是类的一个实例,可以通过类来定义多个对象。在C++中定义类,我们需要使用关键字"class"。下面是一个简单的类的定义:


class Person

{

  private:

    int age;

    string name;

  public:

    void setAge(int a)

    

      age=a;

    

    void setName(string b)

    

      name=b;

    

    int getAge()

    

      return age;

    

    string getName()

    

      return name;

    

};

上述代码中定义了一个名为Person的类,其中包含私有数据成员age和name以及公有成员函数setAge、setName、getAge和getName。通过这些函数,我们可以设置和获取该类的私有数据成员。

二、继承与多态

继承是一种面向对象编程的重要特性,它允许一个类(称为子类或派生类)获取另一个类(称为父类或基类)的属性和方法。在C++中,我们可以使用关键字“class”加上“:”来实现继承。下面是一个简单的继承案例:


class Student : public Person

{

  private:

    int stuId;

  public:

    void setStuId(int s)

    

      stuId=s;

    

    int getStuId()

    

      return stuId;

    

};

在上面的代码中,我们定义了一个名为Student的类,它继承自Person类。另外,Student类添加了私有成员变量stuId以及公有成员函数setStuId和getStuId。

多态是面向对象编程的另一个重要特性,它使得派生类可以以其父类的类型进行处理。在C++中,多态性可以通过虚函数来实现。虚函数是一种特殊的成员函数,它可以在基类中声明为虚函数,然后在派生类中重写该函数。下面是一个简单的使用虚函数实现多态的案例:


class Shape

{

  public:

    virtual float area()

    

      return 0;

    

};

class Circle : public Shape

{

  private:

    float radius;

  public:

    Circle(float r)

    

      radius=r;

    

    float area()

    {

      return 3.14*radius*radius;

    }

};

class Rectangle : public Shape

{

  private:

    float length;

    float width;

  public:

    Rectangle(float l, float w)

    

      length=l;

      width=w;

    

    float area()

    {

      return length*width;

    }

};

在上述代码中,我们定义了一个名为Shape的类,其中包含一个虚函数area。此后,我们定义了两个派生类Circle和Rectangle,并重写了虚函数area。最后,我们可以通过以下代码来实现多态:


Shape *s;

s=new Circle(10);

cout << "Circle area: " << s->area() << endl;

s=new Rectangle(10,5);

cout << "Rectangle area: " << s->area() << endl;

三、模板

模板是C++中非常重要的一个特性,它可以帮助程序员定义通用类或函数,以便可以根据具体数据类型进行实例化。在C++中,我们可以使用关键字“template”来定义模板。下面是一个简单的使用模板的案例:


template <class T>

T getMax(T a, T b)

{

  return (a>b)?a:b;

}

int main()

{

  cout << getMax<int>(10,20) << endl; //20

  cout << getMax<char>('a','b') << endl; //b

}

在上面的代码中,我们定义了一个名为getMax的模板函数,它可以接受任意类型的参数,并返回较大的那个参数。在main函数中,我们通过使用“<类型>”的方式来调用该函数。

四、异常处理

异常处理是C++中另一个非常重要的特性,它提供了一种机制来处理程序执行期间发生的异常情况。在C++中,异常可以由程序员手动引发(称为“throw”),或由系统自动引发(称为“abort”)。我们可以使用关键字“try”和“catch”来捕获异常。下面是一个简单的异常处理案例:


int divide(int a, int b)

{

  if(b==0)

  

    throw "Division by zero!";

  

  return a/b;

}

int main()

{

  try

  {

    int x=10;

    int y=0;

    int z=divide(x,y);

    cout << z << endl;

  }

  catch(const char* msg)

  

    cerr << msg << endl;

  

}

在上述代码中,我们定义了一个函数divide,它用于计算两个数的商。当除数等于0时,我们手动引发了一个异常。在main函数中,我们使用try和catch语句来捕获这个异常。

结语

本篇文章主要介绍了C++高级用法,包括类和对象、继承与多态、模板和异常处理。这些特性能够让程序员利用C++的强大功能来解决更加复杂的问题。我们希望这些知识点能够对广大C++程序员有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复