下面就是如何创建和使用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++类的攻略,希望可以对你有所帮助。