![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++常用概念
konsy_dong
Java,C++,Python,linux
展开
-
C++——如何理解.h文件和.cpp文件
这篇文章是之前摘的笔记放在电脑里,忘记在哪看到的了,就当是原创哈哈哈哈建立一个以类为名字的XX.h文件,声明类,再建立一个相同名字的XX.cpp文件(要#include “XX.h”),实现类中的函数, 在有main 函数的.cpp里声明函数,建一个与函数名一样的.cpp文件,实现该函数;并且要 #include “XX.h”一、源文件如何根据#include来关联头文件系统自带的头文件用尖括原创 2017-03-21 17:09:42 · 13801 阅读 · 0 评论 -
C++——C++11中的defalut和delete关键字
C++的类有四类特殊成员函数 (special member function),它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。当存在用户自定义的特殊成员函数时,编译器将不会隐式的自动生原创 2017-12-28 17:36:48 · 4237 阅读 · 0 评论 -
C++常用概念——while循环时终止输入(Ctrl+Z,Ctrl+C,Ctrl+D(EOF))
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。Ctrl+Z:一般用于输入字符串时,比如下面这个程序 #include <iostream> #include <vector>#inclu原创 2017-08-12 21:59:19 · 22968 阅读 · 1 评论 -
C++——二维vector初始化大小方法
初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到) vector<vector<int>> newOne(r, vector<int>(c, 0));2.用resize()来控制大小 vector<vector<int> > res; res.resize(r);//r行 for (int k = 0; k < r;原创 2017-05-01 11:24:35 · 120963 阅读 · 6 评论 -
C++——常用取整方法
使用floor函数:floor(x)返回的是小于或等于x的最大整数。 如: floor(10.5) == 10 floor(-10.5) == -11使用ceil函数:ceil(x)返回的是大于x的最小整数。 如: ceil(10.5) == 11 ceil(-10.5) ==-10floor()是向负无穷大舍入,floor(-10.5) == -11; ceil(原创 2017-07-23 16:29:59 · 10474 阅读 · 2 评论 -
C/C++——++i、i+=1、i++之间的区别(附在学习boost时遇到的例子)
首先,对于++i和i++的区别是早就认识到了,效率肯定是前置++i更高,因为后者还需要产生临时变量。查了相关资料其实这个问题可以从三个角度去分析:语言规范,编译器实现,CPU支持。首先从语言规范上来讲;前置++和后置++是不等价的,前置++在规范中明确指出 和+=组合操作符是等价的,但和E = E+1;这样的赋值操作不等价,因为后者对操作数E需要进行两次求值,而+=组合操作符只进行一次求值。后置++原创 2017-06-18 15:21:44 · 1221 阅读 · 0 评论 -
C/C++——从ctime使用到随便测一样冒泡排序和堆排序的效率
在ctime文件中,我们可以找到对它的定义:#ifndef _CLOCK_T_DEFINEDtypedef long clock_t;#define _CLOCK_T_DEFINED#endif很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:#define CLOCKS_PER_SEC原创 2017-04-23 08:41:32 · 431 阅读 · 0 评论 -
C++——必须使用复制构造函数的情况
先看代码:#include <iostream>#include <string>using namespace std;class CMessage{public: char *ShowIt(){ return pmessage; } CMessage(const char *text = "Default message"){//默认构造函数原创 2017-04-24 15:37:22 · 567 阅读 · 0 评论 -
C++——复制构造函数的形参为什么要是const引用
1.首先来说重要的一点, 为什么要是引用: 如对于 CBox(CBox initB);//复制构造函数一开始想到的原型CBox cigar;CBox myBox(cigar); //如果编写这样一条语句//那么将生成这样一条对复制构造函数的调用CBox::CBox(cigar);因为实参是通过按值传递机制传递的。在可以传递对象cigar之前,编译器需要安排创建该对象的副本。因此,编译器为了处原创 2017-04-24 14:17:41 · 8429 阅读 · 2 评论 -
C++——const加深理解之const在函数后
先看下面4种情况,应该是理解const的基础,我觉得必须掌握且容易掌握 int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b; [3原创 2017-04-24 12:28:57 · 318 阅读 · 0 评论 -
C/C++——为什么类的静态成员函数在定义的时候不写static?
解释一:举个例子,Base是一个类,data是他的int型static数据成员,那么我们这么定义:int Base::data = 10;1、因为使用static数据成员时,都是Base::data。。。。这么来用的,编译器知道data是在类Base的作用域内,它会去查看data在类中是怎么生命的,所以在定义处加static是没有必要的; 2、那如果加上static,也就是:static int原创 2017-05-23 09:51:28 · 8247 阅读 · 2 评论 -
C++——构建单链表的方法
方法一:适用于构建一个单链表 但是不适用空链表和同时构建多个链表,因为EOF是输入流的终止符#include <iostream>#include <vector>struct ListNode{ int val; ListNode* next; ListNode(int x) :val(x), next(NULL){}};ListNode* createList()原创 2017-05-01 11:25:00 · 1492 阅读 · 0 评论 -
C/C++——有关转义字符和ASCII码表
这些东西还不是很理解 ,只能全部摘自百度了 所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加”\”来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。 ASCII表:原创 2017-04-01 14:47:54 · 7631 阅读 · 0 评论 -
《C和指针》——stdarg宏简介
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。这个头文件声明了一个类型 va_list 和三个宏—— va_start、va_arg 和 va_end。我们可以声明一个类型为 va_list 的变量,与这几个宏配合使用,访问参数值。 函数声明了一个名叫 var_arg 的变量,它用于访问参数列表的未确定部分。这个变量通过调用 va_start 来初始纶。它的原创 2017-04-01 16:23:36 · 467 阅读 · 0 评论 -
C/C++—— int main(int argc,char* argv[])讲解
转自:http://blog.csdn.net/what1136075171/article/details/6945664int main(int argc,char* argv[]) argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名(包括文件绝对路径),以后的参数命令行后面跟的用户输入的参数,比如: int main(int argc,转载 2017-03-31 18:53:27 · 851 阅读 · 1 评论 -
用srand时间数种子来生成随机数
没有废话直接上代码#include <iostream>#include <vector>#include <ctime>#include <iomanip>using namespace std;int main(){ srand(unsigned(time(0)));//时间种子 vector<int> ivec; int count = 0; for (i原创 2017-03-26 16:31:06 · 3322 阅读 · 0 评论 -
C++——内存分配方式详解
堆、栈、自由存储区、全局/静态存储区和常量存储区栈 就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆 就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new转载 2017-03-26 11:20:34 · 557 阅读 · 0 评论 -
C++——面向对象设计原则
依赖倒置原则(DIP)高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定)。抽象(稳定)不应该依赖于实现细节(变化), 实现细节应该依赖于抽象(稳定)。开放封闭原则(OCP)对扩展开放,对更改封闭。类模块应该是可扩展的,但是不可修改。单一职责原则(SRP)一个类应该仅有一个引起它变化的原因。变化的方向隐含送类的责任。Lisko原创 2018-02-05 21:16:50 · 221 阅读 · 0 评论