好的,我可以为您生成一本C++面向对象学习笔记的Markdown文档。以下是我的建议:
C++ 面向对象学习笔记
1. 类和对象
C++中,类是一种用户自定义的数据类型,它包含了数据成员和成员函数。对象是类的实例。
1.1 定义类
定义一个类需要使用class
关键字,接着在花括号内定义数据成员和成员函数。例如:
cppCopy Codeclass 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 CodePerson p;
p.name = "Alice";
p.age = 18;
p.introduce();
上面的代码创建了一个名为p的Person对象,给name和age赋值,并调用了成员函数introduce()。
1.3 访问控制
C++中有三种访问控制权限:public
、private
和protected
。默认情况下,成员的访问权限为private
。可以使用以上三个关键字在类定义中指定成员的访问权限。
- public:任何地方都可以访问。
- private:只有类内部可以访问。
- protected:类内部和派生类中可以访问。
例如:
cppCopy Codeclass 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 Codeclass 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++面向对象学习笔记。希望对您有所帮助。