IOS 学习 c++知识总结
c++ 中创建类
class 类名称
{
private:只能在类的方法内部使用
public:可以在外部使用
protected:没有继承的时候和private是相同的,但是继承了以后就可以在继承中使用了
(C 语言中分配内存的方式是malloc 释放内存是free)
构造函数-----对象被创建的时候调用,初始化类对象
析构函数-----对象被销毁的时候调用
(栈内存和堆内存处理的方式是不一样的,堆内存的空间是交给程序员自己管理的。栈内存是系统自己管理的)
虚函数-----用一个父类的指针分别指向不同的子类对象,调用虚函数的时候,会自动调用子类对象的自身实现的虚函数(每个类中都有一个虚函数表)
纯虚函数-----相当于接口,定义了一套规则
拷贝构造函数 --- 默认的是浅拷贝 什么情况下会调用拷贝构造函数??????
}
(数组的名字实际上是数组的首地址,但是我们不能把他当作指针来使用)
指针
本质上是一个变量,存的是一个地址。所有指针的长度都是一个机器字长(32或者是64)
指针++
增加的是一个“单位”的内存长度
计算数组的长度:
sizeof -----计算变量或者数组活对象占用的内存长度
strlen ------计算字符串的长度(以遇到的第一个'\0'结束字符位标准)
//初始化字符串
memset(目的字符串,内存中填充的值,填充的长度)
memcpy(目的地内存,内存数据来源,拷贝的内存数据长度)
//只用来拷贝字符串
strcpy(目的内存,内存来源)
//字符串连接 把后边的字符串,拼接到字符产1的位置
strcat(连接之后保存的字符串,被连接的字符串)
//比较字符串,比较结果是两个字符串中两个字符串中字符asci码的差值
strcmp(字符串1,字符串2)
引用:
变量的一个别名:声明引用的时候必修指定引用的对象
int var = 10
int &intRef = var
三种传参数的方式
方法中的参数是分配在栈内存中的 所以在方法结束后会自动销毁
1,传值 ---- 传进去的是一个值的拷贝
2,传引用-----传的是参数本身,不会拷贝
3,传地址-----传的是参数中的变量地址
const 常量
在创建const的时候必须同时指定初始值,已经指定将不能改变
const int constValue1 ; //error 必须指定初始值
const int constValue2 //正确
char * const constValue3 = &otherVar//这是一个常指针,不可以改变指针指向的地址,但是可以改变指针指向的值
const chat * constValue4 = &otherVar //这是一个指针常量,不可以改变指针指向的值,但是可以改变指针指向的地址
#define 和 const 的区别
#define 只是简单的替换,所以没有类型判断, 无法对#define金乡常量调试
const 有数据类型,有些编译器可以挑食const常量
struct
结构体内存的对齐
结构体的对齐方式是以四个字节位一个对齐的
//结构体对齐---以空间换时间的措施
#pragma pack(1)
#pargma options align = reset
2,struct 和class 是一样都可以声明类,唯一的区别 默认的访问权限不同 (class --->private;struct --->public )
方法类的重载和重写
方法的重载---方法名相同 :方法的个数或者参数不同
重写----- 子类重写父类的方法,体现在多态上
友元-----在外部访问类中的私有属性(破坏了类的封装性)
两种类型的友元,友元函数,友元类
运算符的重载
不带int的话是前++ ++a
CPPPoint operator++ ();
带int 的话是 后++ a++
CPPPoint operator++(int);
运算符的重载:改变运算符默认的功能,但是不能够改变晕孙福的运算规律和优先级
c++中不能重载的运算符 ,,:: ,三目运算符
c ++ 中是没有super关键字的
在子类中调用父类的方法 通过 父类的类名::方法名
在类中声明字符串的方式
char brand[20]; // 数组的长度可能会不够,但是你不需要管理他的内存
char *barnd 长度是可变的 但是要注意内存的管理
清理内存
delete 指针
清理一片内存
delete[] zhizhen
申请内存
float *pFloat = new flat;
char *char = new char[20];
STL
可变的数组vector 和 map
表示字符串的一些类 string
//这里只是一个知识大纲,在以后会慢慢把每个知识点都总结一下的,