【光速学习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++;
}

Friend

友元函数,在定义一个类的时候,可以把函数和变量声明为友元函数,这样在友元函数内部可以访问该类的私有成员

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值