C/C++相关开发
C与C++相关开发基础技巧
༄yi笑奈何
一个腐败糜烂的环境,永远也无法孕育出真正的文明
展开
-
C++ 【随想录】(八)历史最全读ByteIo操作
C++内存原创 2023-10-12 14:43:36 · 109 阅读 · 0 评论 -
C++ 【随想录】(七)Google c++代码规范
代码风格原创 2023-03-07 19:59:52 · 105 阅读 · 0 评论 -
C++ 11 深度学习(二十)类多态的应用场景
以上通过C++动态绑定,在场景下实现了父类指针调用绑定子类方法的样例原创 2022-06-09 16:46:45 · 430 阅读 · 0 评论 -
C++ 11 深度学习(十九)类模板概念,类模板定义、使用
待定原创 2022-05-24 16:00:06 · 148 阅读 · 0 评论 -
C++ 11 深度学习(十八)模板概念,函数模板定义、调用
模板作为一个框架,通过传入的参数,来具体实例化想要的东西。1.模板定义是用template关键字开头的,后跟<>,<>里面叫模板参数列表(模板实参),如果模板参数列表中有多个参数使用逗号隔开。2.<>里面至少要有一个模板参数,模板参数前有typename/class关键字。3.模板参数列表里的参数,表示在函数定义中用到的(类型)或(值)。4.我们使用时有时候需要指定具体实参;有时候由系统推导出。template<typename T>T原创 2022-05-24 15:56:17 · 1153 阅读 · 0 评论 -
C++ 11 深度学习(十七)condition_variable、wait
简介条件变量std::condition_variable的作用是阻塞线程,然后等待通知将其唤醒。我们可以通过某个函数判断是否符合某种条件来决定是阻塞线程等待通知还是唤醒线程,由此实现线程间的同步。所以简单来说condition_variable的作用就两个——等待(wait)、通知(notify)。下面详细介绍一下。等待线程condition_variable的等待函数有三个,分别是wait()——等待、wait_for()——等待一段时间、wait_until()——等待至某一时刻。另外针原创 2022-04-23 12:16:13 · 10865 阅读 · 0 评论 -
C++ 11 深度学习(十六)单例设计模式共享数据分析、解决,call_once
call_oncestd::call_once(参数一,参数二(函数接口))的功能是保证一个函数只被调用一次,此方法具有互斥量的能力,并且消耗比互斥量少。此函数需要与标记std::once_flag配合使用,通过该标记决定函数是否调用,如果调用成功后,标记被设置为已调用状态。作用:防止在多个线程中存在创建多个单例对象产生的重复创建情况#include <iostream>#include <mutex>using namespace std;once_flag原创 2022-04-23 09:30:48 · 1716 阅读 · 0 评论 -
C++ 11 深度学习(十五)多线程
线程创建方式一:调用函数#include<thread>void CreateThread(){ int a=100; cout<<"This is Thread: "<<a<<endl;}int main(){ thread Threadone(CreateThread); Threadone.join(); //or Threadone.detach(); }方式二:使用类对象,需原创 2020-10-10 14:00:12 · 807 阅读 · 0 评论 -
C++ 11 深度学习(十四)C++类
(一)综述:类是我们自己定义的数据类型设计时要考虑的角度:站在设计和实现的角度来考虑; 站在使用者的角度考虑; 父类,子类之间的考虑;(二)explicit首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).(三) inline const mutable this static在类定义中实现原创 2022-03-21 12:22:50 · 823 阅读 · 0 评论 -
C++ 11 深度学习(十三)左值、右值,左值引用、右值引用、move
左值右值原创 2022-02-23 12:53:03 · 487 阅读 · 0 评论 -
C++ 11 深度学习(十二)函数新特性、内联函数、const详解
函数后置返回类型//后置返回类型auto fun(int, int)->int;内联函数在函数定义前增加关键字 inline ,使得该函数变成内联函数(1) 适用于函数体很小,调用很频繁的函数类型,可以引入内联函数(2) inline影响编译器,在编译阶段对incline函数进行处理,系统尝试将调用该函数的动作替换为函数本体。通过这种方式 ,来提升性能。(3) inline只是开发这对编译器的一个建议,编译器可以尝试去做,也可以不错,这取决于编译器的诊断功能,也就是说决定权原创 2022-02-23 11:26:11 · 487 阅读 · 0 评论 -
C++ 11 深度学习(十一)final和override
1. finalC++ 中增加了 final 关键字来限制某个类不能被继承,或者某个虚函数不能被重写,和 Jave 的 final 关键字的功能是类似的。如果使用 final 修饰函数,只能修饰虚函数,并且要把final关键字放到类或者函数的后面。1.1 修饰函数如果使用 final 修饰函数,只能修饰虚函数,这样就能阻止子类重写父类的这个函数了:class Base{public: virtual void test() { cout <&l.原创 2021-12-07 17:44:47 · 241 阅读 · 0 评论 -
C++ 11 深度学习(十)原始字面量
你是否曾经为了各种json格式无法写入string中而烦恼,为了各种转义而烦恼。如下图c++11为我们带来了全新的解决方法其新特性为使用. R"(xxxxxxxxxxxx)" ,此种形式可以使得以原有形式进行表现出来...原创 2021-12-07 17:38:53 · 127 阅读 · 0 评论 -
C++ 11 深度学习(九)C++文件IO
public static Map<String, Object> sendGet_body(String url, Map<String, String> map_header, Map<String, String> map_body,boolean getorpost) throws IOException, IOException原创 2021-04-05 14:26:58 · 275 阅读 · 0 评论 -
C++ 11 深度学习(八)重定义override
1.动态联编,本质是在运行时多态的表现。2.其本质是因为维护了一张虚函数表,虚函数表以链表的形式存在。每个结点存储了对象指针的地址,通过一个指针进行遍历索引。#include <iostream>#include <armadillo>using namespace std;using namespace arma;class c{public: c(); ~c(); virtual string tostring() { return .原创 2021-04-05 10:08:07 · 252 阅读 · 0 评论 -
C++ 11 深度学习(七)位运算常见操作
1. 取出数中任意k位置的二进制位是0还是1 n >> k & 1 原理 先把想要取出的位置移动到个位,1的二进制是 0001 , 进行与操作就可以提取出最后一位是0还是1;2. 右移操作 等于 n / 2^k , 左移操作 == n * 2 ^ k......原创 2021-03-30 18:36:16 · 488 阅读 · 0 评论 -
C++ 11 深度学习(六)智能指针综述
以下三种智能指针均为类模板1.shared_ptr 共享指针 ,多个指针指向同一个对象,最后一个指针被销毁时,这个对象会被释放。2.week_ptr 是辅助shared_ptr工作的3.unique_ptr 是独占式指针,同一时间只要一个指针能指向该对象,该对象所有权还是可以转移出去的。shared_ptr基础1.共享所有权,不是被一个shaerd_ptr使用,而是被多个shared_ptr之间相互协作,shared_ptr有额外开销。2.工作原理:采用引用计数机制,每个sha...原创 2020-11-23 19:03:57 · 288 阅读 · 0 评论 -
C++ 11 深度学习(五)类型转换:static_cast dynamic_cast const_cast reinterpret_cast
四种cast通用形式:强制类型转换名<type>(express) @强制类型转换名,以上四种 ;@type:想要转成成的目标类型 ; @express,需要转换的目标static_cast内置数据类型转换,具有继承关系的指针和引用,不进行安全检查dynamic_cast动态类型转换,转换具有继承关系的 严格遵循对象类型安全检查 由下向上的转换是安全的,由上向下的转换是不安全不被允许的const_ca...原创 2020-11-23 17:03:05 · 198 阅读 · 0 评论 -
C++ 11 深度学习(四)结构、权限修饰符
1.structstruct MyStruct{ int a; char b;};struct默认权限为public,其中最重要的是涉及到结构体数据对齐。数据对齐,1.数据对齐是指存在处理结构体成员时,成员在内存中的起始地址编码必须是成员类型字节的整倍数。2.要以结构体中最深层的基本数据类型为准。2.权限修饰符public(公有的),接口可以被外部访问 ;private(私有的),类中成员只有被内部定义的成员函数使用;protected(保护的)...原创 2020-11-23 13:26:28 · 228 阅读 · 0 评论 -
C++ 11 深度学习(三)范围for、new内存动态分配、nullptr
1.范围for作用:用于遍历一个序列,例: int v[]{ 1,2,3,4,5,6 }; for (auto x : v)//数组v中每个元素,依次放入x中; cout << x << endl;2.new和deletenew和delete是C++中的两个关键字,其中new 先执行malloc操作,然后调用构造函数;delete 先执行析构函数,然后执行free操作。...原创 2020-11-10 10:30:43 · 210 阅读 · 0 评论 -
C++ 11 深度学习(二) 命名空间简介、基本输入输出精解
1.命名空间作用:防止在大型工程中多个包含文件中的Fuction被重复定义使用造成不能编译的混乱。如下错误显示严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2005 "void __cdecl showFirst(void)" (?showFirst@@YAXXZ) 已经在 first.obj 中定义 Project2 F:\C++语言学习\Project1\Project2\main.obj 1 严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK1169 找到一个原创 2020-08-08 10:26:30 · 489 阅读 · 0 评论 -
C++ 11 深度学习(一)auto、头文件防卫、引用、常量
1.数组初始化int a[]{ 1,2,3,4,5 };2.C++11 autoauto可以在声明变量的时候根据变量的初始值的类型自动为此变量先择合适的类型,声明时要赋予初值。auto自动推导发生在编译期间3.头文件防卫式声明作用防止头文件重复包含#ifndef HEAD_TWO#define HEDA_TWOint two1 = 1;#endif // !HEAD_TOW4.引用引用必须绑定到一个变量上不能绑定到常量上,且引用绑定的类型与引用类型必须为同.原创 2020-08-30 09:50:27 · 1273 阅读 · 0 评论 -
C++ 【随想录】(六)C++后端向JS前端转换
需要包含的头文件#include"comutil.h"#include"<string> BSTR转string BSTR bstrText = ::SysAllocString(L"Test"); string str = _com_util::ConvertBSTRToString(bstrText); SysFreeS...原创 2020-03-24 11:00:20 · 830 阅读 · 0 评论 -
C++ 【随想录】(五)C 文件操作
#include<iostream>#include<cstdio>using namespace std;int main(){ FILE *fp1 = NULL; //指向源文件 FILE *fp2 = NULL; //指向目的文件 char *byBuff=NULL; //缓存 int fileBytes = 0; //文件大小 cons...原创 2020-02-22 12:23:22 · 224 阅读 · 0 评论 -
C++ 【随想录】(四)【Makefile】
编译流程预处理gcc -E test.c -o test.i test.c源码进行预处理,预处理后停止编译,预处理后文件体积会变大,且为文本格式编译gcc -S test.i -o test.s 编译预处理的文件汇编gcc -c test.s -o test.o .s转成二进制文件链接gcc test.o -o test 将多个目标文件以及所需要的库文件链接生成可执行文件的过程./test生成静态库...原创 2020-09-19 22:45:56 · 158 阅读 · 0 评论 -
C++ 【随想录】(三)源文件编译流程,静态库与动态库编译
预处理 :完成宏替换,文件引入;以及去除空行,注释等,为下一步编译做准备。也就是对各种预处理命令进行处理,包括头文件的包含,宏定义扩展,条件编译的选择。gcc -E test.c -o test.i编译:gcc -S test.i -o test-s汇编:gcc -c test.s -o test.o链接:gcc test.o -o test生成静...原创 2021-06-22 15:06:15 · 434 阅读 · 0 评论 -
C++ 【随想录】(二)指针常量与常量指针精解【一次掌握】
关于指针常量和常量指针const int *xint *const y在前先读,在前不变*(指针)和const(常量)谁在前先读谁;*代表被指的数据,名字代表指针地址const在谁前谁不变...原创 2018-12-17 11:00:36 · 156 阅读 · 0 评论 -
C++ 【随想录】(一)模拟矩阵相乘
模拟矩阵相乘。原创 2022-10-09 16:56:38 · 158 阅读 · 0 评论 -
虽然你没有考入清华大学,但是如果你有对于计算机的向往!!!请看过来
本文分享来自清华大学计科的课程,希望对热爱计算机的人有帮助。Github清华大学计算机课程原创 2019-11-02 20:46:26 · 398 阅读 · 0 评论