【C++】

环境配置

VScode

在mac上使用vscode创建第一个C++项目
亲测能跑,需要注意的就是c_cpp_properties.json里面的includePath字段里的clang版本要自己去系统里看一下。
还有就是文中说“[⇧⌘B]是编译程序,[⇧⌘R]是运行程序”,但实际上运行的是[⇧⌘P]的run task,如下
在这里插入图片描述
下面的run c++和build c++就是tasks.json里配置的两个功能
在这里插入图片描述

Visual Studio Code 如何编写运行 C、C++ 程序? - 谭九鼎的回答 - 知乎
案例code runner

cpp配置示例

代码组织

理解 C++ 中的头文件和源文件的作用

内存

C++内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)
C语言~size_t详解

关键字

define

#define宏定义中的#,##,@#,\ 这些符号的神奇用法
也可以写#define SETTER(value_type, field) set_##field,就是定义了一个set的宏

inline

inline函数和#define宏定义简单讲解

static

C++中的static关键字的总结
const和static const的区别

const

C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!
const 修饰函数参数,返回值,函数体

extern

extern的使用

//文件1.cpp
#include <iostream>
int count ;
extern void write_extern();
int main()
{
   count = 5;
   write_extern();
}
//文件2.cpp
#include <iostream>
extern int count;
int num = 10;
void write_extern(void)
{
	int num2 = 500;
	std::cout << "Count is " << count << std::endl;
}

在执行的时候,只要让文件2里的count能在内存里找到count就行

auto

c++ auto类型用法总结

explicit

C++ explicit的作用

变量

声明

C++变量的声明和定义 终于搞明白了

指针与引用

c/c++变量前加*和加&的区别
利用&可以对变量取址,利用*可以对指针取值。
Java里只有引用没有指针,如果把值本身传递给函数,会生成形参,并不会修改值,但把引用传递进函数,修改了之后就会修改内容。
C++里有引用有指针,而且任何东西都有引用和指针,引用代表的是别名,个人认为和Java里的引用是一个意思,只不过c++里所有东西都有引用,java里基本对象没有引用,指针代表的是地址。这俩其实没啥关系,当把一个值传递给函数的时候,同上,但如果传递了引用进去,同上,但传递了指针进去,也可以修改值。

分配内存,pvalue是指针,new就是为这个指针指向的位置分配内存

double* pvalue  = NULL; // 初始化为 null 的指针
pvalue  = new double;   // 为变量请求内存

对象

定义

【C++】struct和class的区别

构造

C++创建对象的两种方法(C++用new和不用new创建类对象)
也可以使用ClassName c1=ClassName(param)
大括号初始化

方法

方法调用

C++ 点(.)操作符和箭头(->)操作符

引用、值、指针

【C++ - 18】C++函数参数传递三种方式
int* a(是指针) int& a(是引用)int a(是形参)
C++里,方法的参数不指定传值/传引用,一律传递值

正确理解C/C++中的传值调用/传址调用/引用调用
其实传指针也可以理解为传值调用,只不过复制的是一个新的指针
C++函数传值返回和引用返回

lambda表达式

C++ 11 Lambda表达式

std

thread

std::thread 用法與範例
std::mutex 用法與範例
std::atomic 用法與範例

IO

C++ 读取键盘输入(cin/cin.getline()/cin.get()/cin.clear())

函数式

C++11:std::bind
如果第二个参数是对象相当于调用这个对象的这个方法
C++11 中的std::function和std::bind

容器

C++11 中的 emplace
vector的reserve和resize

#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
class Apple{
public:
Apple(){name="empty";}
Apple(string n):name{n}{}
string name;
};
int main(int argc, char* argv[])
{
    vector<Apple> vect;   
    vect.push_back(Apple("a"));
    vect.push_back(Apple("b"));
    vect.push_back(Apple("v"));
    vect.push_back(Apple("f"));
    vect.resize(10);    //新的空间不覆盖原有四个元素占有的空间,现在size和capacity都是100
    cout<<vect.size()<<endl;
    int i = 0;
    for (i = 0; i < 10; i++)
    {
        cout<<vect[i].name<<endl; 
    }
    return 0;
}

智能指针

C++ make_shared and .get()
c++ 智能指针用法详解
shared_ptr的使用和陷阱

CMAKE

GCC 和 cmake的关系?
Make 命令教程
【译】一个简单的 make & makefile 教程
Makefile隐晦规则
Makefile由浅入深–教程、干货
隐晦规则可以改写,例如$(CFLAGS)是可以修改的,从而影响隐晦规则
makefile高级用法–隐晦规则2
双后缀是老用法
makefile自动变量与隐晦规则推导

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值