C++面向对象的三大特征:封装、继承和多态;
0.1、LINUX中C++环境配置:
sudo apt-get install gcc g++ sudo apt-get install lsb-core lib32stdc++6 // 安装其他库
测试是否安装成功:
g++ -v gcc -v1、类和对象
1.1类是C++的核心特征,类用于指定对象的形式:
例如Dog为狗这一大类、dog1可以作为一个对象;
1.2从类中实例化对象两种方式:
从栈中实例化对象 从堆中实例化对象
#include#include using namespace std; class Dog{ //定义类 public: string name; //成员变量 int age; void run(){ cout<<"name: "< 随后可以在LINUX中编译然后执行:
g++ class.cpp -o CLASS 编译 ./CLASS 执行1.3、构造函数与析构函数
实际上定义类时,如果没有定义构造函数和析构函数,编译器就 会生成一个构造函数和析构函数。构造函数:在对象实例化时被系统自动调用,仅且调用一次。
析构函数:在对象结束其生命周期时系统自动执行析构函数。
1.4、this 指针
this指针一般在成员函数里用:
void Dog::func() //类外定义函数用::(作用域限定符) 20 { 21 this->name = "小黄"; 22 cout<<"name:"<name< 谁调用这个函数, this 就 指向谁 2、继承 面向对象程序设计中最重要的一个概念;
2.1、 class 派生类 :access-specifier 基类
class derived-class: access-specifier base-class
访问修饰符 access-specifier 是 public、 protected 或 private 其中的一个, base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier ,则默认为 private 。 1. 公有继承( public ):当一个类派生继承公有基类时,基类的公有成员也是派生类的公有成 员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但 是可以通过调用基类的公有和保护成员来访问。 2. 保护继承( protected ): 当一个类派生继承保护基类时,基类的公有和保护成员将成为派 生类的保护成员。 3. 私有继承( private ):当一个类派生继承私有基类时,基类的公有和保护成员将成为派生类 的私有成员。class Dog : public Animal2.2、重载: 函数重载和运算符重载
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 3、多态 多态:C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数; 形成多态必须具备三个条件: 1. 必须存在继承关系; 2. 继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字 virtual 声明的函数,在派 生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数); 3. 存在基类类型的指针或者引用,通过该指针或引用调用虚函数。3.1、虚函数:是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数;
想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接或后期绑定。 虚函数声明如下: virtual ReturnType FunctionName(Parameter) 虚函数必须实现,如果不实现,编译器将报错; 纯虚函数:virtual void funtion1()=0; 包含纯虚函数的类是抽象类,抽象类不能定义实例,但是可以声明指针对象;37 Animal *animal; 39 Dog dog; 43 44 animal = &dog; 45 46 animal->run();虚函数是 C++ 中用于实现多态 (polymorphism) 的机制 。 核心理念就是通过基类访 问派生类定义的函数 。 4、数据封装 4.1封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念; 数据封装是一种把数据和操作数据的函数捆绑在一起的机制, 数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。 5、接口(抽象类) 设计抽象类(通常称为 ABC )的目的,是为了给其他类提供一个可以继承的适当的基类。 抽象类不能被用于实例化对象 ,它只能 作为接口使用 。



