C++编程
文章平均质量分 69
Parallax_2019
初极狭,才通人。复行数十步,豁然开朗。----T
展开
-
代码简洁之道
1.命名要有意义如方法名:动宾 命名要能读得出来 命名具有一致性,且尽量使用领域内专业术语2.函数函数尽量短小 每个函数只抽象一次 函数参数越少越好,超过三个说明参数需要封装(如封成一个类)3.注释需要注释基本可以代表代码整体的表达能力不好,可读性不好,wtf太多 能用命名解决的就不要用注释 拒绝喃喃自语、多余的废话注释及注释掉的代码4.格式每行不要太长,不超过1...原创 2020-04-14 22:14:17 · 261 阅读 · 0 评论 -
C和python中命令行传参解析
python: main(argc, argv[])argv[ ]默认的第一个参数是传进来的执行文件的目录地址,因此argc最小是1 parser = parser """源码中创建parser对象:parser.add_argument参数命名带前缀--:表示是有默认值的参数(源码中用default设置默认值),命令行传参时可传可不传参数名不带前缀:表示命令行调...原创 2020-03-19 10:58:05 · 213 阅读 · 0 评论 -
c++宏定义、调用及编译过程等
/*//c++编译器,对源文件的编译实质就是对每个cpp都分别生成.obj,包括main.cpp.但是main.cpp和其他的.cpp文件是有区别的。其他的.cpp可以直接include到各自的头文件进行编译。而main.cpp即便包含了所有的其他头文件,依然缺少main.cpp中函数及全局变量的定义,因为只能include头文件并不能include .cpp文件!因此main.cpp在...原创 2019-12-29 21:52:32 · 1403 阅读 · 0 评论 -
C++计时函数
auto start = std::chrono::steady_clock::now(); API( ); auto end = std::chrono::steady_clock::now(); std::chrono::duration<double> spent = end - start; std::cout << " Time: " <&l...原创 2019-12-26 15:40:09 · 185 阅读 · 0 评论 -
【转】函数指针和指针函数用法和区别
前言函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。...原创 2019-12-17 22:19:37 · 83 阅读 · 0 评论 -
__declspec(dllexport),extern,extern "C"
接口:(一般项目中与宏定义一起使用)__declspec(dllexport):用在函数声明前,此前缀是用来实现生成dll文件时可以被导出至dll,即提供调用接口。__declspec(dllimport):在调用dll中的接口时,用此前缀声明函数,进而可以调用之前export到dll中的接口extern:同文件中,如果在一个文件中main函数在前,但是其中调用main函数后面才声...原创 2019-12-16 02:06:46 · 566 阅读 · 0 评论 -
c++函数重载、内联函数、类、友元
cin>>a>>b,键盘输入时,是以换行符或者空格作为切分的。遇到换行符或者空格,则认为是下个变量的值。c++与c的不同:基本数据类型多了 bool类型 构造数据类型多了 引用类型:给变量取个别名,定义的时候就要初始化。就是一个变量两个名字。 抽象数据类型多了 类类型函数重载:一个函数定义后被不同形式初始化调用。函数的形参在声明的时候可以初始化(也就是默认...原创 2019-12-16 01:32:32 · 156 阅读 · 0 评论 -
命名空间及异常处理
命名空间:解决的是来自不同开发者代码汇总时在不同的文件中拥有相同的函数名的情况。在不同的文件中使用不同的命名空间,这样只需在调用函数的前面加上命名空间的限制即可,如cv::imwrite如果用了using namespace cv,则默认文件中不加命名空间限制的皆为cv这个命名空间。因此一般即使用了using namespace,相对应的前缀也不可少。异常处理:...原创 2019-12-16 01:30:07 · 269 阅读 · 0 评论 -
C++继承与多态,代码复用之泛型和模板
子类继承基类生成派生类。继承分为单继承和多继承。不同的继承方式对与派生类对继承的基类的对象会产生不同的访问关系。赋值兼容原则:派生类对象可以赋值给基类对象、指针、变量等,反过来不行。多继承:有多个继承的基类。继承的基类前可以些继承方式,缺省默认为私有继承。基类对象的构造函数执行顺序与基类的继承顺序一致。多继承如果不同基类有同名成员,那么可能出现歧义,这就...原创 2019-12-16 01:15:53 · 673 阅读 · 0 评论 -
C利用系统库显示本机当前时间
#include <stdio.h> //给printf用#include <stdlib.h> //给system用#include <time.h>#include <windows.h> //Sleep函数在系统库中/*已知获取本机当前时间的函数如下:time_t nowstruct tm local;time(...原创 2019-12-07 19:50:38 · 126 阅读 · 0 评论 -
C++选择结构及结束、跳转(break、continue、goto)
注:如果不写break,则程序即使执行完了与表达式配对的case条件,依然会进行下一个case判断,直到遇到break。注:1个break只能跳出当前的1层循环。注:continue只是省略循环内的步骤,继续下一个循环...原创 2019-12-07 18:53:15 · 347 阅读 · 0 评论 -
C++之scanf_s
#include <stdio.h> //标准输入输出头文件,printf就是输出函数,只要函数有输入输出操作就需要包含此头文件。#include<stdlib.h> //标准库头文件,system是系统库int main() //一个源程序(即使有多个子文件,依然只能有一个main函数,否则编译提示重定义。)程序编译后,执行就是执行main里的逐行执行,直...原创 2019-12-07 17:58:10 · 4965 阅读 · 0 评论 -
C++中的输入输出
注:因为系统会自动追加字符结束符\0一同存储,因此VS中的安全函数scanf_s最大写入为9.注:c中字符串之间不能直接赋值,但是结构类型的数据是可以直接赋值的。#include <stdio.h> //给printf用#include <stdlib.h> //给system用...原创 2019-12-07 17:41:25 · 783 阅读 · 0 评论 -
Visual Studio中版本号与名称对应关系
名字 版本号 简称 全称 VC10.0 VS2010 Microsoft Visual Studio 2010 VC11.0 VS2012 Microsoft Visual Studio 2012 VC12.0 VS2013 Microsoft Visual Studio 2013 ...原创 2019-11-29 13:50:19 · 416 阅读 · 0 评论 -
VS中包含目录、附加包含目录、库目录、附加库目录及附加依赖项的继承关系
——系统属性表(X64和win32之间各自独立,无继承关系)问题:在visual studio中配置第三方代码库时涉及到包含目录、附加包含目录和库目录,那么Include Directories和Additional Include Directories,以及Library Directories和Additional Library Directories作用是什么? 系统属性表的...原创 2019-11-28 14:08:41 · 1535 阅读 · 0 评论 -
Visual studio文件中不同图标对应对象的类别
函数定义 函数声明 枚举类型定义 宏定义 定义的结构体名 ...原创 2019-11-20 17:26:28 · 365 阅读 · 0 评论 -
C++基本语法(二)数据类型及变量类型、常量
数据类型及变量类型、常量数据类型: 变量(存储信息),变量实际保留的是它存储值的内存位置。创建一个变量,内存就会保留出一部分空间。 操作系统需要根据你创建的变量的数据类型来分配内存及决定在保留内存中存储的内容。(确定占用内存大小及所能存储的最大最小值范围) 1字节=8位基本的内置类型:布尔型 (false, true) ...原创 2018-12-17 01:46:02 · 253 阅读 · 0 评论 -
C++基本语法(一)
C++是对象的集合,对象、类、方法、即时变量。对象:(具有状态和行为)如一只狗的颜色名称(状态),摇动叫唤(行为)。对象是类的实例 类 -类可以定义为描述对象行为/状态的模板/蓝图。 方法 -从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 -每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。...原创 2018-12-17 00:37:43 · 227 阅读 · 0 评论 -
C++控制数据以固定的形式显示
#include <iostream>#include <cmath> //数学库#include <iomanip> //io控制using namespace std;int main(){ //sizeof:用来测定数据类型的长度。 //cout <<sizeof(3.14f)<<endl; f...原创 2019-08-26 09:10:30 · 368 阅读 · 0 评论 -
c++字符类型一些知识点
char类型:8位,一个字节。1 1 1 1 1 1 1 10 0 0 0 0 0 0 0实际上第一位为符号位,不算的,第一位为0表示是正数,为1表示是负数。因此范围是2**7而 unsigned char类型为 未标记类型,1 1 1 1 1 1 10 0 0 0 0 0 0 0第一位是有用的,因此范围是2**8常见asicii码:常用符号的二...原创 2019-08-26 09:27:54 · 264 阅读 · 0 评论 -
c++——codeblocks调试
首先编译程序检查是否有错误。没错误后,点击调试调出监视窗口,监视所有变量的变化。点击行号添加断点然后点击调式-启动调试然后点击逐行调试。...原创 2019-08-26 10:53:03 · 519 阅读 · 0 评论 -
c++循环
for (int i=1 ;i<N; i++) {循环体;}if(){循环体;}循环体内遇到break跳出此整个循环体。for (int i=1 ;i<N; i++){ if( ) cotinue; // for循环内一旦遇到continue,则直接跳到 i++。continue只能用于循环结构中。...原创 2019-08-26 14:48:21 · 181 阅读 · 0 评论 -
C++容器vector及迭代器对象iterator
#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<double> Vecdouble = {99.3,46.1,26.1,44.3}; Vecdouble.push_back(100.5...原创 2019-08-26 14:41:50 · 739 阅读 · 0 评论 -
C++内存与指针
int year; year = 1000; (内存地址在0028ff44)int * ptr_year; // int * 即声明了一个指针型变量,指针是一个变量,保存的是一个变量的地址。 // 在声明语句中,可以把 "* "看作是指针的类型ptr_year = &year /...原创 2019-08-26 17:22:12 · 366 阅读 · 0 评论 -
c++动态分配内存
使用new分配内存:在运行阶段分配未命名的内存以存储值。这个内存实际是堆内存。int *ptr_int = new int; // new和delete是成对出现的。 delete ptr_int; // delete是指释放内存。使用new给数组分配动态内存。int *ptr_array = new int[10]; delete[] ptr_array...原创 2019-08-26 18:19:57 · 453 阅读 · 0 评论 -
参数传递-复制和引用
使用引用实质还是指针,使用引用的好处:可以更加简洁的书写代码 可以直接传递某个对象,而不只是把对象复制一份。#include <iostream>using namespace std;void swap1(int,int);void swap2(const int&, const int&); //const 可以将参数变成只读,无法更改。in...原创 2019-08-27 15:03:26 · 315 阅读 · 0 评论 -
C++函数及类方法(待补充)
自定义函数的写法#include <iostream>using namespace std;int sum(int,int); //函数原型,可以省略变量名,以分号结尾。int main(){ int result = sum(5,6); //调用函数实现cout << "The result is :"<<result<...原创 2019-08-27 18:23:00 · 529 阅读 · 0 评论 -
C++ primer 简读
C++创始人寄语:轻松使用这种语言,不要觉得必须使用所有的特性,不要在第一次学习时就试图使用所有特性。 头文件引用,如果是标准库引用用尖括号<>,如果是不属于标准库的头文件引用用双引号"" 明白什么是流就知道了流的插入运算符(插入到工作台)<<cout: 输出从后面的名流向标准输出cout插入来显示. cin,cout,endl都是std里的标准操作。(end li...原创 2019-08-28 09:31:49 · 255 阅读 · 0 评论 -
C++基本语法(三)存储类及运算符
存储类static 存储类修饰局部变量,会使函数调用之间保持局部变量的值。修饰全局变量时,会使变量的作用域限制在声明它的文件内。该变量在全局数据区分配内存 在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后...原创 2018-12-17 03:21:48 · 247 阅读 · 0 评论