
C++学习
Lasuerte
这个作者很懒,什么都没留下…
展开
-
C++ 委托学习笔记
class A{public: void Func(int){...}};要取得Func函数指针,void (A::*pFunc)(int)=&A::Func;::*是一个特殊操作符,表示pFunc是一个指针,指向A的成员。获取成员函数的地址不能通过类对象来获取,必须通过类名获取,而且要加上取地址操作。那么如果通过指针来调用该函数,成员函数都隐含了一个this参数,表示函数要操作的对象,我们只获取了函数的指针,还缺少一个对象作为this参数,为了这个目的...原创 2020-05-13 11:17:11 · 279 阅读 · 0 评论 -
C++ 类型转换
Let’s begin with a review of casting syntax, because there are usuallythree different ways to write the same cast. C-style casts look like this: (T) expression // cast expression to be of type T Function-style casts use this syn原创 2020-05-12 15:44:40 · 288 阅读 · 0 评论 -
【转】C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)
可变参数的函数原理其实很简单,而va系列是以宏定义来定义的,实现跟堆栈相关.我们写一个可变函数的C函数时,有利也有弊,所以在不必要的场合,我们无需用到可变参数。如果在C++里,我们应该利用C++的多态性来实现可变参数的功能,尽量避免用C语言的方式来实现。 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提...转载 2020-04-28 09:55:54 · 352 阅读 · 0 评论 -
C++11 并发指南三(Lock 详解)
文章转自https://www.cnblogs.com/haippy/p/3346477.html感谢大佬 侵删在 《C++11 并发指南三(std::mutex 详解)》一文中我们主要介绍了 C++11 标准中的互斥量(Mutex),并简单介绍了一下两种锁类型。本节将详细介绍一下 C++11 标准的锁类型。C++11 标准为我们提供了两种基本的锁类型,分别如下:std::lo...转载 2019-12-18 14:49:06 · 343 阅读 · 0 评论 -
Effective C++ 条款25
25namespace WidgetFunc { template <typename T> class Widgett { public: template <typename T> Widgett(T* pcObj, size_t size) { m_pcO...原创 2019-10-18 16:41:04 · 382 阅读 · 0 评论 -
type_traits学习
获取T的原始类型,我们通过std::remove_reference移除引用,需要获取智能指针指向的对象时需要对原始类型U添加左值引用。#include <iostream>#include <type_traits>#include <memory>template <typename T>struct Const...原创 2019-05-06 17:30:50 · 461 阅读 · 0 评论 -
C++11中的右值引用
个人理解就是用一个变量引用一个右值,比如将亡值,以延长其生命周期。变量引用的是右值,不过变量本身还是个左值。#include <iostream>struct MyString{ MyString() { m_szStr = 0; m_size = 0; } MyString(char* str) ...原创 2019-05-07 20:59:41 · 420 阅读 · 0 评论 -
C++模拟鼠标键盘操作(转)
API 或 MFC 视窗程序 里 有 函数,例如 API 函数 设位置:BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y头文件 Winuser.h链接库 #pragma comment (lib, "User32.lib") 或取位置 GetCursorPos(&p);显示鼠标 int ShowCursor( B...转载 2019-10-11 09:39:22 · 3179 阅读 · 2 评论 -
C++中大数运算简单处理
这里说的是在数据类型表示范围内的处理,如果是非常大的数,可以封装bignumber用字符串运算。遇到问题是unsigned long long int = 1024*1024*1024*4;用一个超级大的类型在32位程序上,只要超过int表示范围也会变为0,因为右边的默认为int操作,所以需要指定类型:u :表示无符号整形(unsigned)l:表示long类型...原创 2019-10-11 09:48:37 · 1287 阅读 · 0 评论 -
map的insert返回值
关于map容器的insert成员的返回值说明:(1)map对象中一个给定键只对应一个元素。如果试图插入的元素所对应的键已在容器中,则insert将不做任何操作;(2)含有一个或一对迭代器形参的insert函数版本如:m.insert(beg,end),并不说明明是否有或有多少个元素插入到容器中。(3)但是,带有一个键-值pair形参的insert版本将返回一个值:包含一个迭代器和一个bool...转载 2019-01-28 10:31:54 · 5305 阅读 · 0 评论 -
C++中类大小的计算
c++中类所占的大小计算并没有想象中那么简单,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空类等,不同情况有对应的计算方式,在此对各种情况进行总结。首先要明确一个概念,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 我们这里指的类的大小,其实指的是类的对象所占的大小。因此,如果用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。关于类/对象大小的计算首先...转载 2018-11-07 16:49:11 · 261 阅读 · 0 评论 -
const学习
#include "stdafx.h"#include<vector>#include<iostream>int main(){ char a[] = { 'a', 'b' }; // 同时定义两个指针,都指向字符数组a的首地址 char* const cpp = a; // const修饰指针,表示指针不可以修改,指针指向的内容可以修改 ...原创 2018-05-21 22:14:03 · 178 阅读 · 0 评论 -
C++ 调用dll库接口学习
1.静态加载通过这种方法需要dll,lib,h三个文件,在你的程序里包含头文件,属性->链接器->附加库目录,里添加lib文件,dll放在exe同目录下。调用的时候直接根据头文件的接口名即可使用。...原创 2018-05-22 11:33:14 · 1784 阅读 · 0 评论 -
C++重载学习
// 重载学习.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;class Complex{public: int a; int b;public: Complex(int a = 0, int b = 0) :a(a...原创 2018-06-25 17:22:46 · 182 阅读 · 0 评论 -
基础知识复习(难度3星)
C语言中函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用---------------------------循环----分为当型和直到型。当型就是常用的while,直到型是do while----------------------------C语言中变量以补码形式存放在内存中,正数的补码与原码相同,负...原创 2018-08-01 17:00:43 · 261 阅读 · 0 评论 -
sizeof、strlen、length() 区别与联系
char szTest[] = "Test string length"; std::string strTest = "Test string length"; // sizeof 的作用为返回该类型在内存中所占空间真实大小,与其对象无关 int nSzSize = sizeof(szTest); // 19,包含空字符,即18+1 in...原创 2018-09-03 14:48:40 · 294 阅读 · 0 评论 -
C++函数指针练习
bool useBigger(const std::string& a, const std::string& b){ return a.compare(b) > 0 ? true : false;}// 函数类型typedef bool Func(const std::string&, const std::string&);typede...原创 2018-09-03 16:41:25 · 692 阅读 · 0 评论 -
virtual学习
// virtual学习.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>class father{public: father(){}; // 析构为纯虚函数,防止派生类析构不完整 virtual ~father() = default; // 基类自定义构造函数...原创 2018-09-20 18:48:30 · 555 阅读 · 0 评论 -
什么时候使用引用、什么时候使用指针
使用引用参数的主要原因有两个:程序员能修改调用函数中的数据对象 通过传递引用而不是整个数据–对象,可以提高程序的运行速度一般的原则:对于使用引用的值而不做修改的函数: 如果数据对象很小,如内置数据类型或者小型结构,则按照值传递 如果数据对象是数组,则使用指针(唯一的选择),并且指针声明为指向const的指针 如果数据对象是较大的结构,则使用const指针或者引用,已提高程序的效率。这样...转载 2018-10-08 14:27:48 · 1854 阅读 · 0 评论 -
CFile学习
CFile类的声明保存在afx.h头文件中。CFile类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能。CFile类的成员变量:m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile 与 CFile::hFileNull的比较来判断该文件是否已经转载 2017-10-30 20:30:45 · 611 阅读 · 0 评论