
C/C++
oalken
这个作者很懒,什么都没留下…
展开
-
【2021.01.20】C++进程名称获取进程PID、获取指定进程模块句柄
进程名称获取进程PID#include <Windows.h>#include <TlHelp32.h>DWORD GetProcessId(WCHAR* szProcessName){ HANDLE hProcessSnapShot = NULL; PROCESSENTRY32 pe32 = { 0 }; hProcessSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hPr原创 2021-01-20 18:38:43 · 6493 阅读 · 0 评论 -
【2020.12.28】static关键字
面向过程设计中的static(C语言)"私有"的全局变量。void Function(int nFlag){ //只能给当前函数使用的全局变量 static char szBuffer[0x10]; if(nFlag) { strcpy(szBuffer, "Hello"); } else { printf("%s\n", szBuffer); }}//只能给当前函数使用,所以是"私有"的全原创 2020-12-28 22:25:09 · 80 阅读 · 0 评论 -
【2020.12.28】命名空间
命名冲突问题class MyObject{public: void Fn() { }};class TestObject{public: void Fn() { }};Fn()属于不同对象的成员,所以已经可以解决命名冲突问题,但是还不够。 当有类名相同,该怎么办呢?命名空间(namespace)彻底解决命名冲突问题。命名空间namespace 名称A{ //全局变量 //函数原创 2020-12-28 21:17:24 · 112 阅读 · 0 评论 -
【2020.12.28】内部类
内部类内部类就是在类中定义的类。#include <iostream>class MyObject{private: int x;public: class TestObject { private: int y; public: TestObject() {} TestObject(int y) { this->y = y; } }; MyObject() {} MyObject(int x) { this->原创 2020-12-28 20:32:26 · 89 阅读 · 0 评论 -
【2020.12.28】友元
友元函数class MyObject{ //告诉编译器, 该函数可以访问该类的任何成员 friend void PrintObject(MyObject* pObject);private: int x;public: MyObject() {} MyObject(int x) { this->x = x; }};void PrintObject(MyObject* pObject){ pr原创 2020-12-28 20:12:21 · 95 阅读 · 0 评论 -
【2020.12.28】对象拷贝之重载赋值运算符
对象拷贝的两种形式使用拷贝构造函数。 使用 "=" 运算符。面向对象中的 "=" 运算符简单的对象复制操作。 有父类时的复制操作。#include <iostream>class Base{private: int x; int y;public: Base() {} Base(int x, int y) { this->x = x; this->y = y; }};原创 2020-12-28 19:53:47 · 253 阅读 · 0 评论 -
【2020.12.28】对象拷贝之拷贝构造函数
什么是对象拷贝? 对象 对象 对象 数组A Object1 Object2 Object3 数组B Object1 Object2 Object3 Object4 ...... 例如:随着工程发生变化,长度为3的数组A可能不够用了。此时需要一个更大的数组来存放更多的内容,但是需要把原来的数据复制到新的更大的数组中。如果是C语言,通常使用函数进行内存...原创 2020-12-28 19:10:59 · 356 阅读 · 0 评论 -
【2020.12.27】纯虚函数
什么是纯虚函数?将成员函数声明为virtual。 该函数没有函数体(后面加上=0)。class Test{public: //纯虚函数 virtual double GetValue() = 0;};抽象类任何继承该抽象类的子类都必须遵守的标准含有纯虚函数的类,被称为抽象类(Abstract Class)。 抽象类也可以包含普通的函数。 抽象类不能实例化。class Test{public: //纯虚函数 virtual double原创 2020-12-27 23:53:28 · 121 阅读 · 0 评论 -
【2020.12.26】模板
冒泡排序函数一个针对int数组的冒泡排序函数,如果排序main()函数中的char数组(carr),要对函数进行改动。#include <iostream>//一个针对int数组的冒泡排序函数void Sort(int* arr, int nLength){ int i, k; for (i = 0; i < nLength - 1; i++) { for (k = 0; k < nLength - 1 - i; k++)原创 2020-12-26 22:58:05 · 108 阅读 · 0 评论 -
【2020.12.26】运算符重载
运算符重载给运算符对应一个具体的函数class Number{private: int x; int y;public: Number(int x, int y) { this->x = x; this->y = y; } bool compare(Number& p) { return this->x > p.x && this->原创 2020-12-26 20:13:05 · 70 阅读 · 0 评论 -
【2020.12.25】面向对象程序设计之多态
函数重载和函数重写函数重载指在同范围中(如:一个类中)声明的多个同名函数,但是这些函数的形式参数(参数的个数、类型、顺序)不同。#include <iostream>int main(){ return 0;}int test(){ return 0;}int test(int a){ return a;}int test(int a, int b){ return a + b;}int test(int a, i原创 2020-12-25 21:04:57 · 129 阅读 · 0 评论 -
【2020.12.25】面向对象程序设计之继承与封装
回顾继承子类从父类继承成员变量。 子类从父类继承成员函数。#include <iostream>class Person{public: int age; int sex; void Work() { printf("Person:Work()"); }};class Teacher:public Person{public: int level;};int main(){ Teache原创 2020-12-25 19:44:40 · 89 阅读 · 0 评论 -
【2020.12.25】引用类型
引用类型引用就是变量的别名//基本类型int x = 1;int& p = x;p = 2;printf("%d\n", x);//类class MyClass{public: int x;};MyClass p;MyClass& px = p;px.x = 10;printf("%d\n", p.x);//指针int* p = (int*)1;int*& a = p;a = (int*)2;printf("%d\n", p原创 2020-12-25 18:25:56 · 132 阅读 · 0 评论 -
【2020.12.25】如何在堆中创建对象?
可以在什么地方创建对象?全局变量区将代码放在函数外部时。#include <iostream>struct MyClass{ int a;};//将这行代码放在函数外部时MyClass obj;int main(){ return 0;}栈将代码放在函数内部时,在函数执行完毕时,对象的空间也就没有了。#include <iostream>struct MyClass{ int a;};int mai原创 2020-12-25 15:26:53 · 467 阅读 · 0 评论 -
【2020.12.25】类成员的访问控制
类成员的访问控制三种访问控制修饰符:public // 公有成员 protected // 保护成员 private // 私有成员对外提供的函数或者变量,定义为public,但不能随意改动。 可能会变动的函数或变量,定义为private,这样编译器会在使用时做检测。 只有结构体内部的函数才可以访问private的成员。 public/private可以修饰函数也可以修饰变量。private真的不能访问吗?#include <iostream>struct Tes原创 2020-12-25 14:50:54 · 312 阅读 · 0 评论 -
【2020.12.25】继承
什么是继承?继承就是数据的复制,减少重复代码编写。struct MyStruct1{ int a; int b;};struct MyStruct2{ int a; int b; int c;};//MyStruct1与MyStruct2中重复编写了a和b//此时就可以使用继承/*MyStruct1 称为父类或基类MyStruct3 称为子类或派生类*/struct MyStruct3:MyStruct1{ int c原创 2020-12-25 14:22:58 · 93 阅读 · 0 评论 -
【2020.12.23】构造函数、析构函数
构造函数 1.与类同名且没有返回值。2.创建对象的时候执行、多用于初始化。3.可以有多个(最好保证有一个无参构造函数),称为函数重载,其他函数也可以重载。4.函数重载需要保证函数参数列表不同。5.编译器不要求必须提供构造函数。struct MyClass{ int a; int b; int c; int d; MyClass() { printf("无参构造函数\n"); } MyCla..原创 2020-12-24 00:19:20 · 123 阅读 · 0 评论 -
【2020.12.21】this指针
#include <iostream>struct MyStruct{ int a; int b; int c; int add(int a, int b, int c) { this->a = a; this->b = b; this->c = c; return this->a + this->b + this->c; }};int main(){ MyStruct test = { 1,2,3 }; .原创 2020-12-22 17:24:20 · 110 阅读 · 0 评论 -
【2020.12.21】封装、类、成员函数
什么是封装? 将函数定义到结构体内部,就是封装。 什么是类? 带有函数的结构体,称为类。 什么是成员函数? 结构体里面的函数,称为结构函数。结构体中定义的函数并不占用空间。#include <iostream>struct MyStruct{ int a; int b; int c; int add() { return a + b + c; }};int main(){ MyStruct test = { 1,2,3 };..原创 2020-12-22 17:20:28 · 126 阅读 · 0 评论 -
【2020.11.22】预处理指令、内联函数
// an inline function definitioninline double square (double x) {return x*x}内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数...原创 2020-12-22 17:09:00 · 95 阅读 · 0 评论 -
【2020.11.22】函数指针
函数指针 函数指针是指向函数的指针变量,即本质是一个指针变量。 它是怎么定义的呢?返回类型(调用约定*变量名)(参数列表);例1://定义函数指针变量int (__cdecl*pFun)(int, int);//为函数指针变量赋值//正常使用时应给予一个拥有可执行代码的地址,这里只是举例pFun =(int(__cdecl*pFun)(int, int))10;//使用函数指针变量int r = pFun(1, 2);例2:...原创 2020-12-22 17:07:14 · 77 阅读 · 0 评论 -
【2020.11.21】调用约定
__stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。 调用协议常用场合 __cdecl:C/C++默认的函数调用协议。 __stdcall:Windows API默认的函数调用协议。 __fastcall:适用于对性能要求较高的场合。 函数参数入栈方式 __cdecl:函数参数由右向左入栈。 __stdcall:函数参数由右向左入栈。...原创 2020-12-22 17:05:10 · 92 阅读 · 0 评论 -
【2020.11.21】指针、指针数组、数组指针
【指针】 指针就是单独的(或者说新的)数据类型,暂时不要把它跟任何东西关联。指针是如何定义的呢?例:char* x = 1;short* y = 1;int* z = 1;像定义普通变量的时候一样,在类型名称后面加上一个*号即可定义指针类型。 取地址符:& 解引用/取值符:* 例1:int x = 1;int* y =&x;*y= 2;将变量(x)的地址赋值给了指针(y),那么此时指针(y)存储的内容就是变量(...原创 2020-12-22 17:02:59 · 170 阅读 · 0 评论