C++第四讲
发布人:shili8
发布时间:2025-02-01 11:29
阅读次数:0
**C++第四讲:类和对象**
在前三讲中,我们已经学习了C++的基本语法、变量类型以及控制结构。今天我们将进入更高级的话题:类和对象。
###什么是类和对象?
在面向对象编程(OOP)中,类和对象是两个核心概念。**类**是一种模板或蓝图,它定义了一个实体的属性和行为。**对象**则是根据类创建出来的具体实例。
### 类的定义在C++中,我们可以使用`class`关键字来定义一个类。下面是一个简单的例子:
cppclass Person { public: string name; int age; void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } };
在这个例子中,我们定义了一个名为`Person`的类,它有两个属性:`name`和`age`,以及一个方法`:sayHello()`。
### 对象的创建要使用类,我们需要创建一个对象。下面是如何创建一个`Person`对象:
cppint main() { Person person; person.name = "John"; person.age =30; person.sayHello(); return0; }
在这个例子中,我们首先创建了一个名为`person`的`Person`对象,然后设置其属性和调用其方法。
### 类成员函数类成员函数是定义在类内的函数,它们可以访问类的成员变量。下面是一个例子:
cppclass Person { public: string name; int age; void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } void setAge(int newAge) { age = newAge; } };
在这个例子中,我们定义了一个名为`setAge()`的成员函数,它可以设置对象的年龄。
### 类构造函数类构造函数是用于初始化对象的特殊成员函数。下面是一个例子:
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()`的构造函数,它可以初始化对象的属性。
### 类析构函数类析构函数是用于释放资源的特殊成员函数。下面是一个例子:
cppclass Person { public: string name; int age; ~Person() { cout << "Goodbye, my name is " << name << " and I'm " << age << " years old." << endl; } void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } };
在这个例子中,我们定义了一个名为`~Person()`的析构函数,它可以释放资源。
### 类继承类继承是指一个类从另一个类继承属性和行为。下面是一个例子:
cppclass Animal { public: string name; int age; void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } }; class Dog : public Animal { public: string breed; void sayHello() { cout << "Woof! Hello, my name is " << name << ", I'm a " << breed << " dog and I'm " << age << " years old." << endl; } };
在这个例子中,我们定义了一个名为`Dog`的类,它继承了`Animal`类的属性和行为,并添加了一些新的属性和行为。
### 类多态性类多态性是指同一函数可以有不同的实现方式。下面是一个例子:
cppclass Animal { public: virtual void sayHello() { cout << "Hello, I'm an animal." << endl; } }; class Dog : public Animal { public: void sayHello() override { cout << "Woof! Hello, I'm a dog." << endl; } };
在这个例子中,我们定义了一个名为`Animal`的类,它有一个虚函数`sayHello()`。然后我们定义了一个名为`Dog`的类,它继承了`Animal`类,并重写了`sayHello()`函数。
### 总结本讲我们学习了C++中的类和对象,包括类的定义、对象的创建、类成员函数、类构造函数、类析构函数、类继承和类多态性。这些概念是面向对象编程的基础,我们将在后续的讲中继续深入探讨。
###习题1. 定义一个名为`Person`的类,它有两个属性:`name`和`age`,以及一个方法`:sayHello()`。
2. 创建一个`Person`对象,并设置其属性和调用其方法。
3. 定义一个名为`setAge()`的成员函数,它可以设置对象的年龄。
4. 定义一个名为`Person()`的构造函数,它可以初始化对象的属性。
5. 定义一个名为`~Person()`的析构函数,它可以释放资源。
6. 定义一个名为`Dog`的类,它继承了`Animal`类的属性和行为,并添加了一些新的属性和行为。
7. 定义一个名为`sayHello()`的虚函数,它可以有不同的实现方式。
### 参考答案1.
cppclass Person { public: string name; int age; void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } };
2.
cppint main() { Person person; person.name = "John"; person.age =30; person.sayHello(); return0; }
3.
cppclass Person { public: string name; int age; void setAge(int newAge) { age = newAge; } };
4.
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; } };
5.
cppclass Person { public: string name; int age; ~Person() { cout << "Goodbye, my name is " << name << " and I'm " << age << " years old." << endl; } void sayHello() { cout << "Hello, my name is " << name << " and I'm " << age << " years old." << endl; } };
6.
cppclass Dog : public Animal { public: string breed; void sayHello() { cout << "Woof! Hello, my name is " << name << ", I'm a " << breed << " dog and I'm " << age << " years old." << endl; } };
7.
cppclass Animal { public: virtual void sayHello() { cout << "Hello, I'm an animal." << endl; } }; class Dog : public Animal { public: void sayHello() override { cout << "Woof! Hello, I'm a dog." << endl; } };