网站一直被攻击怎么办,网站建设技术风险分析,新乡模板建站,网站建设与维护 排序题封装:将数据和操作数据的方法进行结合, 隐藏具体的实现细节, 只提供接口用来交互
类: 一种自定义类型, 类域和访问限定符, 让外面只能看到该类的一些接口, 而看不到其具体的成员及接口的具体实现 类
语法:class name{...}; 里面可有成员函数, 成员变量类域: 访问类域里面的代…封装:将数据和操作数据的方法进行结合, 隐藏具体的实现细节, 只提供接口用来交互
类: 一种自定义类型, 类域和访问限定符, 让外面只能看到该类的一些接口, 而看不到其具体的成员及接口的具体实现 类
语法:class name{...}; 里面可有成员函数, 成员变量类域: 访问类域里面的代码, 需要指定类域类的实例化: 类是对对象的描述, 不占空间, 只有实例化出对象的时候才会占空间类的大小计算: 根据内存对齐规则类成员的存储方式 成员变量: 存在于实例化的对象中(非静态)成员函数: 存在于公共的代码段中(同类对象的成员函数是相同的,这样更节省空间) 默认成员函数
默认成员函数: 构造函数,析构函数,拷贝构造,赋值运算符,取地址及const取地址操作符默认成员函数: 我们不写编译器自动生成总结: 构造函数与析构 : 内置类型: 不处理 自定义类型: 调用其构造和析构拷贝构造与赋值 : 内置类型: 浅拷贝 自定义类型: 调用其拷贝构造和赋值
示例
class A
{
public: ...
private:int _a;int _b;
};1.构造函数
//1.构造函数A()A(int a , int b)//初始化列表:_a(a),_b(b){}
语法: 函数名与类名相同, 无返回值, 可以重载初始化列表:语法同上 const成员, 引用,自定义成员(没有默认构造函数), 必须在初始化列表初始化初始化列表的初始化顺序与成员变量的声明顺序相同成员变量在初始化列表中只能出现一次(初始化只能初始化一次)功能:用来初始化对象(自动调用), 函数体内给叫赋值默认成员函数: 我们不写, 编译器自动生成默认生成的构造函数: 对内置类型不处理, 对自定义类型调用其构造函数注意: 默认构造函数: 无参的构造和全缺省的构造(默认构造函数只能有1个)不然会有歧义用类实例化的时候, 无参的构造不能加(), 与函数声明存在歧义 2.析构函数 //2.析构函数~A()语法:无参,无返回值功能:回收资源(自动调用)默认生成的析构函数, 对内置类型不处理, 对自定义类型调用其析构函数 3.拷贝构造 //3.拷贝构造A(const A a)//参数必须是, 否则会死递归{_a a._a;_b b._b;}
语法:同上 参数必须是引用:如果是传值(有临时变量产生会在调用拷贝构造), 而我们自己显示写了拷贝构造, 编译器会再次调用我们写的拷贝构造, 会出现死递归功能: 用已近存在的对象去构造一个新对象默认生成的拷贝构造: 对内置类型: 浅拷贝 对自定义类型调用其拷贝构造 4.赋值运算符 //4.赋值运算符A operator(const A a){if(this ! a)//不给自己赋值{_a a._a;_b b._b;}return *this;}
语法:同上 不要给自己赋值(无意义)要有返回值: 可用做到连续赋值返回值是,参数是, 可用提高效率(没有拷贝)参数加const 避免被修改功能: 把一个对象赋值给另一个已经存在的对象默认生成的赋值: 对内置类型: 浅拷贝 对自定义类型调用其赋值注意: 不要将赋值运算符写成全局的, 我们不写编译器自动生成, 全局又有一个, 会产生歧义不能重载的运算符: . .* :: :? sizeof 类相关的知识
this指针
功能:用来区别类实例化的对象,知道是那个对象在调用成员函数this指针存在于成员函数的参数列表中(第一个参数), 在栈上或寄存器this指针的类型类类型* const即成员函数中不能给this指针赋值this指针只能在成员函数内部使用
static
static在C语言中 修饰局部变量: 使其放在静态区,生命周期延长(和全局变量类似)修饰全局变量: 使其只能在声明它的文件中可见修饰函数: 使其只能在当前文件下可用static在C中 修饰类成员 static成员变量: 属于类,共有的不属于任何对象 要在类外初始化(指定类域)static成员函数: 没有this指针--也无法访问类里的成员
const
const在C语言中 修饰变量: 使其具有常属性, 不能被修改const在C中 修饰普通变量, 已经是常量, 具有宏替换的效果修饰类成员 成员变量:必须在初始化列表中初始化成员函数:本质修饰this指针, 使其指向的内容不能被改变
友元
功能: 使其能够访问类的私有成员语法: 给要访问该类的函数或类加上friend
匿名对象
没有名字,生命周期只有一行,通常用于仿函数,传参
explicit
功能:禁止隐式类型的转换(若有默认构造函数, 一般允许隐式类型的转换发生)使用: explicit A()如 A a1 1; 先将1隐式类型转换为A类型的对象, 在拷贝构造a1