好的,我可以为您生成一本C++面向对象学习笔记的Markdown文档。以下是我的建议:

C++ 面向对象学习笔记

1. 类和对象

C++中,类是一种用户自定义的数据类型,它包含了数据成员和成员函数。对象是类的实例。

1.1 定义类

定义一个类需要使用class关键字,接着在花括号内定义数据成员和成员函数。例如:

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

上面的代码定义了一个名为Person的类,它包含了两个数据成员:一个字符串类型的name和一个整型的age,以及一个成员函数introduce(),该函数输出对象的信息。

1.2 创建对象

创建对象需要在类名后面加上一对括号,如下所示:

cppCopy Code
Person p; p.name = "Alice"; p.age = 18; p.introduce();

上面的代码创建了一个名为p的Person对象,给name和age赋值,并调用了成员函数introduce()。

1.3 访问控制

C++中有三种访问控制权限:publicprivateprotected。默认情况下,成员的访问权限为private。可以使用以上三个关键字在类定义中指定成员的访问权限。

  • public:任何地方都可以访问。
  • private:只有类内部可以访问。
  • protected:类内部和派生类中可以访问。

例如:

cppCopy Code
class BankAccount { public: // 公共成员函数 void deposit(double amount); void withdraw(double amount); private: // 私有数据成员 double balance; }; BankAccount account; account.deposit(100.0); // 正确 account.balance = 0; // 错误:balance是私有成员

2. 继承

继承是一种重要的面向对象编程概念,它允许您创建一个新类,从现有类继承属性和方法。

2.1 定义派生类

定义一个派生类需要使用class关键字,后跟类名和基类名称,接下来在花括号内定义新的数据成员和成员函数。例如:

cppCopy Code
// 基类 class Shape { public: virtual double getArea() = 0; }; // 派生类 class Rectangle: public Shape { public: double width; double height; double getArea() override { return width * height; } };

上面的代码定义了一个名为Rectangle的派生类,它从Shape类继承了getArea()函数,并增加了width和height两个数据成员。

2.2 访问基类成员

在派生类的成员函数中,可以使用作用域解析运算符::来访问基类成员。例如:

cppCopy Code
class Rectangle: public Shape { public: double width; double height; double getArea() override { return Shape::getArea(); } };

上面的代码重写了getArea()函数,并调用了基类Shape的getArea()函数。

实例

下面是一个使用C++的实例。

cppCopy Code
#include <iostream> class Animal { public: virtual void speak() { std::cout << "I am an animal." << std::endl; } }; class Cat: public Animal { public: void speak() override { std::cout << "I am a cat." << std::endl; } }; class Dog: public Animal { public: void speak() override { std::cout << "I am a dog." << std::endl; } }; int main() { Animal* pAnimal = new Animal(); pAnimal->speak(); // 输出:I am an animal. delete pAnimal; pAnimal = new Cat(); pAnimal->speak(); // 输出:I am a cat. delete pAnimal; pAnimal = new Dog(); pAnimal->speak(); // 输出:I am a dog. delete pAnimal; return 0; }

上面的代码定义了一个Animal基类和两个派生类:Cat和Dog。在main()函数中,创建了三个Animal指针,分别指向Animal、Cat和Dog对象,并调用了它们的speak()函数。

以上就是我为您生成的C++面向对象学习笔记。希望对您有所帮助。