您现在的位置是:首页 >其他 >【光速学习C++】一些笔记整理网站首页其他
【光速学习C++】一些笔记整理
因为开发需要使用C++编写代码,但是博主以前完全没有接触过C++,或者类似的面向对象的开发语言,只能一边硬着头皮写一边总结知识点了
class类里面的三个状态:
一开始被这三种状态搞得云里雾里,现在稍微总结出一些经验.
public:
public类里面的东西可以被别的类,或者主函数调用,所以在里面放的就是一些在类外会用到的东西
private:
私有类里面的东西只能在类内操作,也就是我不能在其他地方直接操作这些数据,包括先初始化一个实例然后再使用也是不行的,想要使用必须在public里面写一些更改私有变量的函数,每次想要改变或者调用类的私有变量时,用Public里面的这些函数作为跳板,获取私有变量的值.
一般就把那些变量或者常量放在里面
protected
据说好像是用在继承里面,但是我还没有学到这一步,暂时把这个概念放一下
结构体的对齐
#pragma pack(1)
在文件头加入这一句,可以使结构体1字节对齐,不会进行补全
构造函数和析构函数
class a{
};
a::a() //构造函数
{
}
a::~a()//析构函数
{
}
构造函数会在类被初始化的时候自动运行,它没有返回值,可以用做各种函数的初始化 ,默认不会带初值,但是可以在Public里面带参数调用构造函数,这样在构造函数在运行时就会获得参数.
析构函数会在删除所创建对象时执行.他不能带参数,也不能返回值,有助于在跳出程序前释放资源
explicit/implicit
explicit: 用于修饰只有一个参数的类构造函数,表明该构造函数是显式的,会取消隐式转换
**implicit: ** 表面该构造函数是隐式的
常量
nullptr: 用它来替代NULL,用来区分空指针和0,一般就让空指针等于这个nullptr
constexpr: 定义一个常量表达式
类型推导
auto: 可以在循环中定义变量来迭代vector变量,还可以用于参数传参,但是现在还不能用在推导数组类型
decltype: 可以推断表达式的类型
线性容器
std::array<>和std::vector<>:前者要指定好内存,后者内存会随着数据的增加自己增长,但是在删除操作时,内存并不会自动返还,需用.shrink_to_fit()
将额外内存归还给系统
内存分配
new: 为任意数据类型动态的分配内存
double* pvalue = NULL; // 初始化为 null 的指针
pvalue = new double; // 为变量请求内存
delete: 释放内存
delete pvalue
命名空间: 使用关键字namespace,后面跟命名空间的名称
namespace name {
// 代码声明
}
name::code;
使用了命名空间就可以指定命名空间中的特定项目
多线程
#include <pthread.h>
pthread_create(thread,attr,start_routine,arg)
thread :指向线程标识符的指针
attr: 用来设置线程属性对象,也可以使用默认值NULL
start_routine: 线程运行的起始地址
arg: 运行函数的参数
终止线程
phread_exit (status)
Vector<>
一种容器,有一些方法
vector<int> vec;
vec.size();//求大小
vec.push_back(1);//将数值推到容器的尾部
vec.begin();//起始点
vec.end(); //终止点
//可以用迭代器iterator访问值
vector<int>::iterator v = vec.begin;
while(v!=vec.end())
{
v++;
}