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++》第一版