1、
函数关键字:strcmp
使用格式:类型 strcmp(参数1,参数2)
功 能: 比较参数1和参数(1、若参数1>参数2,返回正数;2、若参数1<参数2,返回负数;3、若参数1=参数2,返回0;)
2、
(1)
唯一的const位于的左侧,表示指针所指的数据是常量,指针本身是变量可以指向其他内存单元。 比如 const int * p = &a;
(2)
唯一的const位于的右侧,表示指针本身是常量,指针本身是不能修改的,所指的数据是可以通过指针修改的。 比如 int * const p = &a;
(3)
党const位于*的两侧,表示指针本身和指针所指的向量都是常量。比如:
const int * const p = &a;
int const * const p = &a;
3、
对于需要频繁调用并且代码量少的函数,在程序编译期间会直接把这段函数复制过去再执行。这样做的目的是增加执行效率;比如定义一个Student类的内联函数:
inline Student(int: a) {}
4、函数的重载
为同一个函数定义多个版本,从而使函数可以实现多个不同功能,此叫函数的重载;
实现函数的重载关键是,改变同一函数的参数,比如:参数的类型、参数的个数;
int max (int a, int b , int c)
int max (int a , int b)
5、动态分配内存指针
在动态使用内存时,new和delete是配对出现的,并且释放数组的时候要注意书写格式
double *p = new double[3];
delete []p;
6、结构化程序设计
(1)顺序结构 (2)循环结构 (3)分支结构
7、程序的定义
数据结构+算法;
8、面向对象特征
封装、继承、多态
9、作用域运算符" :: "
功能是 变量或函数的作用范围
10、类的创建
定义一个student类 s;
声明类对象的引用:student &ss = s;
声明类对象的指针:student *p = &s;
11、访问范围说明符
public 可以直接访问, 关于继承:本类和直接继承类可以使用
private 通过类函数访问,关于继承:通过类函数访问
protected 通过类函数访问,关于继承:本类和直接继承类可以使用
12、
构造函数可以被重载可以有多个
析构函数不能被重载不能有参数
复制构造函数
13、static
静态成员变量不能在类体内赋初值,必须在类体外赋初值
静态函数只可以调用静态函数和静态变量
非静态函数可以调用非静态和静态函数和变量
静态成员是类的成员,不是对象的成员,在类被定义的时候就已经被创建
静态函数不能被说明为虚函数
14、const
常量对象只能调用常量成员函数,普通函数可以调用常量成员函数
定义常量成员函数: void getValue() const;
定义在类中的常量变量必须在类的构造函数中初始化
15、成员对象和封闭类
一个类的成员变量如果是另一个类的对象,那这个类就是封闭类,这个成员变量就是成员对象;
16、重载运算符 operator
运算符被重载为全剧函数需要传两个参数
运算符被重载为成员函数需要传一个参数
比如重载“ - ”:int operator-(const int &a);
17、重载赋值运算符
比如定义一个类 Student
Student &operator=(int);
Student &Student::operator=(int a){
this->num = a;
return *this;
}
这样Student类就可以被赋值int类型而返回Student类型
18、浅拷贝和深拷贝
浅拷贝:首先必定是值的拷贝;
其次如果是指针或者引用赋值,那么一个值变化了另外一个值也会变化,因为指向的是同一块内存空间;
深拷贝:是将一个对象中指针成员变量指向的内容复制到另一个对象中指针成员变量指向的内存,因为不公用指针所指向内存,所以不会造成一个值改变另一个值也会改变;
19、派生类
派生类需要定义自己的构造函数和析构函数,不能继承基类的;
基类中的静态成员是和派生类共享的;
避免二义性的做法 基类::成员 / 基类::函数
20、虚函数 virtual
为了实现运行时多态的目的,可以通过基类指针或者基类引用调用虚函数实现运行时多态;
virtual关键字只能在类中使用,比如 virtual void fun();
构造、全局、静态、友元 函数不能声明为虚函数;
派生类可以重写基类中的虚函数,但是不能改变参数;
不能在构造函数和析构函数中调用虚函数;
21、纯虚函数
virtual void fun() = 0;