面向过程和面向对象
面向过程(SP):分析实现步骤,编写函数,用函数一个个实现。
面向对象(OOP)将数据结构和对数据结构处理的方法封装成一个个对象
new、delete
- new 运算符 可以用于创建堆空间
例如:
int *p; p=new int;
char *pStr=new char[50]; - delete运算符 可以用于释放堆空间
例如:
delete p;
delete [] pStr; - 和malloc/free的区别
1.new/delete会调用构造函数和析构函数分配内存,malloc/free不会
2.new自动分配内存,并且强制转换;malloc自定义分配大小,并且要自己转换
3.new/delete是运算符,malloc/free是函数
内联函数(inline)
//提高效率,小代码、频繁使用时使用内联函数
inline int add1(int a, int b)
{
return a + b;
}
类(class)
//在C++中用class定义的类中,其成员的默认存取权限是private;
//在C++中用struct定义的结构体中,其成员的默认存取权限是public;
class A
{
void func(); //方法
public:
int a; //属性或数据成员
};
初始化列表
1.const
2.引用
3.父类构造函数需要形参
4.数据成员是另一个类的对象,这个类构造函数需要形参
const和静态成员
类的静态成员(数据成员和方法成员(函数))不允许调用非静态成员
非静态成员可以调用静态成员
———因为非静态成员依赖对象,有开辟空间
所以在外部,非静态成员不依赖对象可以直接调用
const成员不能调用不允许调用非const成员
非const成员可以调用const成员
——–因为const不能修改
重载、重定义(隐藏)、多态(覆盖)
重载(同一类中,函数名一样,参数不一样)
重定义(1.不同类,函数名一样,参数不一样;或者2.不同类,函数名一样,参数一样,没有virtual)(隐藏掉子类的成员)
多态(不同类,函数名一样,参数一样,子类继承父类,基类函数是虚函数)(覆盖父类)