C++学习笔记(一)
C++包括面向对象开发的三大特性
- 封装性
- 继承性
- 多态性
封装性
封装的目标:实现软件部件的“高内聚、低耦合”,防止程序相互依赖而带来的变动影响。
封装的思路:面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性对应于变量,行为对应于方法,方法可以直接访问同一个对象中的属性。
个人想法:一般来说,我们把类的成员变量定义为private类型,成员函数定义成public类型。C语言中也提供了一个类似于封装的关键词struct,但该关键词只限于封装变量。类的用法和struct的用法相似。
继承性
继承的本质:继承是两个类之间的关系。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。一个类继承另一个类是说这个类属于另一个类,具有另一个类的所有属性和方法,同时它还可以有另一个类不具备的方法和属性。
继承的好处:提高了软件的可重用性和可扩展性。
继承的功能:继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。
单继承与多继承:C++中,一个派生类可以从一个基类产生(单继承),也可以由多个基类产生(多继承)。
单继承的书写格式:class 派生类的名字:继承方式 基类的名字
多继承的书写格式:class 派生类名:继承方式1 基类名1,继承方式2 基类名2,…
继承方式有三种,分别为public继承,protect继承,private继承。
Tips:
- 如果基类成员不想在类外直接访问,但需要在派生类中能访问,就定义为protected类型的成员。
- 基类private成员在派生类中无论以什么方式继承都是不可见的
参考:https://blog.csdn.net/studyhardi/article/details/90744785
多态:多种形态
多态的实现:实现角度讲多态可分为两类:编译时的多态和运行时的多态。
编译时:编译过程中确定了同名操作的具体操作对象。静态绑定。
运行时:程序运行时动态确定操作针对的具体对象。动态绑定。
多态性的几种定义:
1在C++程序设计中,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,这样就可以用同一个函数名调用不同内容的函数。换言之,可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。
2多态是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态。
3多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。
C++程序
实例:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World";
return 0;
}
这个程序可以输出“Hello World”,一些说明如下:
- iostream是个头文件,即input output stream输入输出流
- using namespace std; 告诉编译器使用 std 命名空间
- cout<<是输出的意思
- cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。
相关知识:cin.get()函数可以用来读入一个字符。
用法如下:
ch=cin.get();和cin.get();的作用相同,都是读入一个字符存入ch
cin >> 与 cin.get 混合使用可能产生问题。
参考:http://c.biancheng.net/view/1346.html
typedef
typedef可以用来给一个已有的类型起一个新的名字。
例如typedef double two;
就是给double类型也可被称为two。
所以two a;
就是double a;
。
枚举类型
当一个变量有几种可能的取值时,可以将它定义为枚举类型。
枚举类型的关键字:enum
格式:enum 类型名{枚举常量表}
例如:enum color {blue,yellow,red,white};
提示:枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值。默认为0,1,2,3...
可以在定义枚举类型时为部分或全部枚举常量指定整数值,指定值之前的按默认方法取值,指定值之后,依次+1。
注意:枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。