当前位置:实例文章 » HTML/CSS实例» [文章]C++学习——类和对象(三)

C++学习——类和对象(三)

发布人:shili8 发布时间:2025-03-10 10:33 阅读次数:0

**C++学习——类和对象(三)**

在前两篇文章中,我们已经了解了什么是类、类的定义、成员变量和成员函数等基本概念。今天我们将继续讨论类和对象之间的关系,以及如何使用类来创建对象。

###1. 类和对象**类**是一种模板,描述了一组数据和行为的集合。它定义了一个实体的属性和方法。**对象**是类的一个实例,它具有类定义的所有属性和方法。

例如,我们可以定义一个`Person`类来描述一个人:

cppclass Person {
public:
 string name;
 int age;

 void sayHello() {
 cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl;
 }
};


在这个例子中,`Person`类定义了一个名为`name`的成员变量和一个名为`sayHello()`的成员函数。我们可以创建一个`Person`对象来使用这些属性和方法:

cppint main() {
 Person person;
 person.name = "John";
 person.age =30;

 person.sayHello();

 return0;
}


在这个例子中,我们创建了一个名为`person`的`Person`对象,并设置了其`name`和`age`属性。然后我们调用了`sayHello()`方法来输出一条信息。

###2. 类的构造函数**构造函数**是类的一个特殊成员函数,它用于初始化类的成员变量。在C++中,构造函数的名称必须与类名相同。

例如,我们可以定义一个`Person`类的构造函数:

cppclass Person {
public:
 string name;
 int age;

 // 构造函数 Person(string n, int a) {
 name = n;
 age = a;
 }

 void sayHello() {
 cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl;
 }
};


在这个例子中,我们定义了一个构造函数`Person(string n, int a)`,它接受两个参数:`name`和`age`。我们可以使用这个构造函数来初始化`Person`对象:

cppint main() {
 Person person("John",30);

 person.sayHello();

 return0;
}


在这个例子中,我们创建了一个名为`person`的`Person`对象,并传递了两个参数给构造函数。然后我们可以直接使用`person`对象的属性和方法。

###3. 类的析构函数**析构函数**是类的一个特殊成员函数,它用于释放类占用的资源。在C++中,析构函数的名称必须与类名相同,但前面加上一个波浪线符号(~)。

例如,我们可以定义一个`Person`类的析构函数:

cppclass Person {
public:
 string name;
 int age;

 // 构造函数 Person(string n, int a) {
 name = n;
 age = a;
 }

 ~Person() {
 cout << "Person object is being destroyed." << endl;
 }

 void sayHello() {
 cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl;
 }
};


在这个例子中,我们定义了一个析构函数`~Person()`,它输出了一条信息。我们可以使用这个析构函数来释放`Person`对象占用的资源:

cppint main() {
 Person person("John",30);

 person.sayHello();

 // 销毁person对象 person.~Person();

 return0;
}


在这个例子中,我们创建了一个名为`person`的`Person`对象,并使用析构函数来释放其占用的资源。

###4. 类的继承**继承**是类之间的一种关系,子类可以继承父类的成员变量和成员函数。子类还可以添加新的成员变量和成员函数。

例如,我们可以定义一个`Person`类和一个`Student`类:

cppclass Person {
public:
 string name;
 int age;

 void sayHello() {
 cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl;
 }
};

class Student : public Person {
public:
 string major;

 void sayHello() {
 cout << "Hello, my name is " << name << ", I'm a student of " << major << "." << endl;
 }
};


在这个例子中,我们定义了一个`Person`类和一个`Student`类。`Student`类继承了`Person`类的成员变量和成员函数,并添加了一些新的成员变量和成员函数。

我们可以使用`Student`对象来调用其父类的成员函数:

cppint main() {
 Student student("John",30, "Computer Science");

 student.sayHello();

 return0;
}


在这个例子中,我们创建了一个名为`student`的`Student`对象,并使用其成员函数来输出一条信息。

###5. 类的多态性**多态性**是指同一个类名可以有不同的行为。我们可以通过重载运算符或定义虚函数来实现多态性。

例如,我们可以定义一个`Shape`类和一些子类:

cppclass Shape {
public:
 virtual void draw() =0;
};

class Circle : public Shape {
public:
 void draw() {
 cout << "Drawing a circle." << endl;
 }
};

class Rectangle : public Shape {
public:
 void draw() {
 cout << "Drawing a rectangle." << endl;
 }
};


在这个例子中,我们定义了一个`Shape`类和一些子类。我们可以使用多态性来实现不同的行为:

cppint main() {
 Shape* shape = new Circle();
 shape->draw();

 shape = new Rectangle();
 shape->draw();

 return0;
}


在这个例子中,我们创建了一个名为`shape`的指针,并使用多态性来实现不同的行为。

### 总结本文介绍了类和对象之间的关系,以及如何使用类来创建对象。我们还讨论了类的构造函数、析构函数、继承和多态性等概念。通过这些例子,我们可以更好地理解类和对象之间的关系,并使用类来实现不同的行为。

### 参考* 《C++ Primer》第五版* 《Effective C++》第二版* 《More Effective C++》第一版

其他信息

其他资源

Top