![](https://img-blog.csdnimg.cn/20191130094657318.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++基础
文章平均质量分 91
WJsuperrunner
学无止境
展开
-
win32API如何获取进程句柄
要获取某个进程的句柄,首先要获取该进程的ID,通过ID获取进程的句柄。代码如下:需要用到的头文件:#include "tlhelp32.h"#include "windows.h"DWORD GetProcessidByName(const wchar_t* name){ PROCESSENTRY32 pe ={0}; DWORD id = 0; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe.原创 2020-07-26 11:17:15 · 1114 阅读 · 0 评论 -
C++ 静态成员函数如何访问非静态成员
我们知道,普通成员函数隐藏这一个this指针,所以可以去调用类中别的成员函数和成员变量。静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于某个对象,静态函数的创建要早于非静态函数和成员变量,静态函数中的member可能都没有分配内存。此外,静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员。那么如何调用呢?我们可以显示的传入对象指针,如下:class Demon1{public: static void FunctionA(Demon* p) {原创 2020-07-14 11:09:35 · 1479 阅读 · 0 评论 -
cin使用技巧
使用cin过程中,如果只想读数字,遇到字母无法退出循环的问题:while (1){ std::cin >> n; if (std::cin.fail()) { //如果输入失败,清空处理,方可继续 std::cin.clear(); std::cin.sync(); printf("重新输入:...原创 2019-12-08 22:00:24 · 570 阅读 · 0 评论 -
C/C++ this指针 和 利用const隐式的修改this指针类型
1.this 指针this指针指向用来调用成员函数的对象(this被作为隐藏的参数传递给方法)。每一个成员函数(包括构造函数和析构函数)都有一个this指针,this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this,在函数的括号后面使用const*限定符将this限定为const,这样将不能使用this来修改对象的值。然而,要返回的并不是this,因为this是对象的地...原创 2019-12-05 10:22:24 · 858 阅读 · 0 评论 -
C/C++程序运行耗时统计(高精度)
方法一:(单位为微秒) #include<iostream> #include <chrono> #include <windows.h> using namespace std; using namespace chrono; int main() { auto start = sy...原创 2019-12-03 21:56:12 · 2076 阅读 · 0 评论 -
C/C++ 文件读写操作
1.文件写操作可参考 文件写操作2.文件读操作采用标准库里面的read();函数原型:istream& read (char* s, streamsize n);s为文件名,n为要读取的字节长度。几个常用的成员函数:(1). stream& seekg (streamoff off, ios_base::seekdir way)(2) 第二个参数有以下...原创 2019-12-02 22:09:23 · 478 阅读 · 0 评论 -
C/C++什么时候需要定义一个复制构造函数
1.关于复制构造函数复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中(包括按值传递参数),而不是常规的赋值过程中,类的复制构造函数原型如下:ClassName(const ClassName &)注意:这里之所以使用引用,可以有效的防止无限递归的去调用复制构造函数,可以节省调用构造函数的时间以及存储新对象的空间。2.何时调用复制构造函数新建一个对对象...原创 2019-12-02 21:40:30 · 607 阅读 · 0 评论 -
有局部参数时sort()排序函数的用法
sort()函数中的比较函数必须为static函数(比较函数前面加static),否则会报错。因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态。所以要加上static关键字另一个问题,当我想在cm...转载 2019-05-02 10:58:27 · 583 阅读 · 0 评论 -
取虚表的内容
原创 2018-08-24 16:34:36 · 255 阅读 · 0 评论 -
多态与虚函数
原创 2018-08-06 11:33:52 · 105 阅读 · 0 评论 -
继承
借用https://blog.csdn.net/mr_ahke/article/details/52144842的例子#include <iostream>#include <stdlib.h>using namespace std;class Object{public: Object(int _a) { a = _a; cou...原创 2018-08-06 11:26:15 · 123 阅读 · 0 评论 -
构造函数、析构函数、复制构造函数
原创 2018-08-06 11:21:06 · 118 阅读 · 0 评论 -
指针、指针的指针详解
#include "stdafx.h"#include <iostream>using namespace std;int a = 1, b = 2;void change0(int *x){ x = &b;}void change3(int *x){ *x = b;}void change1(int x){ x = b;}void change2(int **x){ *x =...原创 2018-07-12 09:48:52 · 415 阅读 · 0 评论 -
new 内存失败如何处理
方法一: try { //分配内存 int* a= new int[bigBigNum]; } catch(std::bad_alloc) { //异常处理 // 返回 }方法二: try { double *ptr=new double[100000...原创 2019-11-01 22:30:56 · 182 阅读 · 0 评论 -
C++写日志Log
GitHub上面下载的代码,挺好用,权当学习#ifndef YLOG_YLOG_H_#define YLOG_YLOG_H_#include <string>#include <fstream>#include <cassert>#include <ctime>class YLog{private: std::ofstream ...原创 2019-11-01 22:21:46 · 340 阅读 · 0 评论 -
C/C++ 打印文件名、行号、函数名的方法
1、打印文件名、行号、函数的两种方式 #include <cstdio> //定义打印宏,并在打印信息前加入文件名、行号、函数名 //此宏展开后,类似于printf("123"),printf("456"); #define TRACE_CMH_1 (printf("%s(%d)-<%s>: ",__FILE__, __LINE__, __F...转载 2019-11-01 22:17:16 · 2021 阅读 · 0 评论 -
C++11 std::move和std::forward
0 绪论关于左值右值示例可看这里1、左值和右值的概念左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体;右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。2、引用引用是C++语法做的优...转载 2019-06-06 10:39:47 · 692 阅读 · 1 评论 -
泛化之美--C++11可变模版参数的妙用
https://www.cnblogs.com/qicosmos/p/4325949.html转载 2019-06-05 21:32:13 · 314 阅读 · 0 评论 -
C++特殊成员函数实例
#include "stdafx.h"#include<iostream>#include<cstring>#include <fstream>#pragma warning( disable : 4996)using std::cout;class stringBad{public: stringBad(const char * s...原创 2019-04-25 15:10:18 · 149 阅读 · 0 评论 -
C++ typename的起源与用法
本文转自: http://feihu.me/blog/2014/the-origin-and-usage-of-typename/非常感谢这位博主通俗易懂的讲解,转载过来一起学习。起因近日,看到这样一行代码:typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor;虽...转载 2018-11-07 10:51:10 · 165 阅读 · 0 评论 -
C++ 仿函数
先考虑一个简单的例子:假设有一个vector<string>,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样: bool LengthIsLessThanFive(const string& str) { return str.length()<5; } int res=count_i...转载 2018-10-29 12:01:43 · 114 阅读 · 0 评论 -
虚表
C++ 中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技 术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚 函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。虚函数表对C++ 了解的人都应...转载 2018-08-08 18:59:49 · 261 阅读 · 0 评论 -
sizeof() 计算类的大小
一个类中,虚函数、成员函数(包括静态与非静态)和静态数据成员都不占用类对象的存储空间。 空类型的实例中不包含任何信息,本来求sizeof的结果应该是0,但是当我们声明该类型的实例时,必须在内存中占有一定得空间,否则无法使用这些实例。至于占多少内存,由编译器决定。在Visual Studio中,每个空类型的实例占用1字节的空间。 因为一个空类也要实例化...原创 2018-08-08 09:30:16 · 613 阅读 · 0 评论 -
C++中基类的析构函数为什么要用virtual虚析构函数
C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采...转载 2018-08-07 15:13:41 · 153 阅读 · 0 评论 -
C++ STL unique() 执行过程图解
unique() 执行过程图解黑色箭头表示unique()最终返回的位置;原创 2018-04-15 14:58:00 · 297 阅读 · 0 评论 -
字符串输入C++
转载:http://blog.csdn.net/u011487593/article/details/45095083学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)1、cin 2、cin.get() 3、cin.getline() 4、getline转载 2017-08-31 14:25:36 · 308 阅读 · 0 评论