如何创建和使用C++类?

  • Post category:cplus

下面就是如何创建和使用C++类的详细攻略。

创建和使用C++类

什么是类?

C++是面向对象编程语言,而类就是C++面向对象编程中最基础的概念之一。类是一个用户自定义的数据类型,用于表示一类对象的共同属性和行为。

如何创建一个类?

创建一个类需要用到关键字class,一般的类定义形式为:

class 类名 {
  访问修饰符:
    属性;
    方法;
};

其中访问修饰符可以是public、protected或private,表示该属性或方法的可访问性。

下面是一个简单的类的定义示例,表示一个人的基本信息:

class Person {
public:
  int age;
  string name;
  void introduce() {
    cout << "My name is " << name << ", " << age << " years old." << endl;
  }
};

在这个示例中,我们定义了一个Person类,包含了一个整型的age和一个字符串类型的name属性,以及一个introduce()方法用于打印这个人的信息。这个类的访问修饰符为public,可以在类外部访问这些属性和方法。

如何创建一个类的对象?

当我们定义完一个类后,我们需要通过这个类来创建对象,对象可以理解为类中的一个实例,也就是一个类的具体化。

创建对象需要使用类名作为类型,通过构造函数来实现,构造函数没有返回值,也没有void,其函数名必须与类名相同,在创建对象时会被系统自动调用。

下面是创建类对象的示例:

Person p;
p.age = 18;
p.name = "Tom";
p.introduce();

在这个示例中,我们创建了Person类的一个对象p,给p的age和name属性分别赋值为18和”Tom”,然后调用了p的introduce()方法。

如何访问类中的属性和方法?

在类的定义中,我们可以给属性和方法定义不同的访问修饰符,分别表示它们的可访问性。

  • public:表示属性和方法可以在类的外部访问;
  • protected:表示属性和方法可以在类的派生类中访问;
  • private:表示属性和方法只能在类的内部访问。

下面是一个类的属性和方法访问示例:

class Car {
public:
  string brand;    // 公共属性
  void start();    // 公共方法

protected:
  int speed;       // 保护属性
  void accelerate();// 保护方法

private:
  int price;       // 私有属性
  void stop();     // 私有方法
};

在类的外部,我们可以通过.来访问对象的属性和方法:

Car car;
car.brand = "Toyota";
car.start();

在类的内部,我们可以直接通过属性名和方法名来访问属性和方法:

class Car {
public:
  string brand;
  void start() {
    speed = 0;
    accelerate();
  }

protected:
  int speed;
  void accelerate() {
    speed++;
  }

private:
  int price;
  void stop() {
    speed = 0;
  }
};

一个完整的类示例

下面是一个包含构造函数和析构函数的完整的类示例:

#include <iostream>
using namespace std;

class Rectangle {
protected:
  float width;
  float height;

public:
  Rectangle(float w, float h) {
    width = w;
    height = h;
    cout << "Rectangle created." << endl;
  }

  float getArea() {
    return width * height;
  }

  ~Rectangle() {
    cout << "Rectangle destroyed." << endl;
  }
};

int main() {
  Rectangle r(5.0, 4.0);
  cout << "Area: " << r.getArea() << endl;
  return 0;
}

这个示例中,我们创建了一个Rectangle类,包含了两个属性width和height和两个方法getArea和析构函数~Rectangle(),并用构造函数Rectangle(float w, float h)来初始化这个对象。

在main函数中,我们创建了一个Rectangle类的对象r,并传递参数5.0和4.0给构造函数,然后调用了r的getArea()方法,最后程序执行完成后,自动调用了r的析构函数。

另一个完整的类示例

下面是一个类继承示例:

#include <iostream>
using namespace std;

class Shape {
protected:
  int width;
  int height;

public:
  Shape(int w, int h) {
    width = w;
    height = h;
    cout << "Shape created." << endl;
  }

  virtual int area() {
    cout << "Shape area:" << endl;
    return 0;
  }
};

class Rectangle : public Shape {
public:
  Rectangle(int w, int h) : Shape(w, h) {
    cout << "Rectangle created." << endl;
  }

  int area() {
    cout << "Rectangle area:" << endl;
    return width * height;
  }
};

class Triangle : public Shape {
public:
  Triangle(int w, int h) : Shape(w, h) {
    cout << "Triangle created." << endl;
  }

  int area() {
    cout << "Triangle area:" << endl;
    return (width * height) / 2;
  }
};

int main() {
  Shape *shape;
  Rectangle rec(10, 7);
  Triangle tri(10, 7);

  shape = &rec;
  shape->area();

  shape = &tri;
  shape->area();

  return 0;
}

在这个示例中,我们创建了一个Shape类,包含了两个属性width和height和一个虚函数area(),同时定义了一个Rectangle类和一个Triangle类,都继承自Shape类,并重载了area()方法。

在main函数中,我们再定义了一个Shape类型的指针shape,并分别将Rectangle类和Triangle类的对象赋值给shape,并调用shape的area()方法,因为area()是虚函数,所以能够根据对象的真实类型来调用相应的方法。

至此,我们就完成了如何创建和使用C++类的攻略,希望可以对你有所帮助。