![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 83
学习C++
hd51cc
这个作者很懒,什么都没留下…
展开
-
类型特质和静态断言
可以转换为布尔值的整型常量表达式。如果计算出的表达式为零 (false),则显示参数,并且编译失败,并出现错误。如果表达式不为零 (true),则 static_assert声明无效。当参数为零时显示的消息。该消息是编译器的中的一个字符串;即,不是。注解声明的参数表示软件断言。软件断言指定在程序的某个特定点应满足的条件。如果条件为 true,则 static_assert声明无效。如果条件为 false,则断言失败,编译器在参数中显示消息,并且编译失败,出现错误。原创 2024-01-11 19:56:48 · 329 阅读 · 0 评论 -
C++ λ表达式
λ表达式提供了函数对象的另一种编程机制。原创 2024-01-11 19:35:01 · 394 阅读 · 0 评论 -
C++智能指针
智能指针是一种模板类型的对象。给动态分配内存的对象使用智能指针意味着不再需要使用delete,并避免内存泄漏。原创 2024-01-11 19:16:54 · 330 阅读 · 0 评论 -
MFC:窗口绘图
Windows使用图形设备界面(Graphical Device Interface,GDI)定义输出。GDI支持在对图形输出编程时不依赖显示它的硬件,这意味着程序不进行任何修改,就可以在具有不同显示硬件的不同机器上运行。设备上下文在输出设备上进行绘图操作时,必须使用设备上下文。设备上下文是一种Windows数据结构,它包含的信息允许Windows将输出请求转换成物理输出设备上的动作,输出请求采用与设备无关的GDI函数调用形式。MFC类CDC封装了一个设备上下文,所以对该类型的对象调用函数,就可以执行所有的原创 2022-06-08 19:44:15 · 1981 阅读 · 0 评论 -
MFC:资源符号、菜单、工具栏
资源标识符 (C++) (符号) | Microsoft Docs符号是一个资源标识符 (ID) ,它包含两个部分,一个符号名称 (文本字符串) 映射到符号值 (整数) 例如: 该对话框包含以下属性:在" 资源符号" 对话框中,选择"新建 "。在" 名称 "框中,键入符号名称。接受分配的符号值,或在"值"框中键入 新 值。选择 " 确定",将新符号添加到符号列表。在资源视图中,右键单击 .rc 文件并选择"资源符号",在"资源符号"对话框中查看资源符号表。浏览资源符号中的符号时,可能需要详细了解如何使原创 2022-06-04 18:08:56 · 1448 阅读 · 0 评论 -
MFC-消息处理
消息处理的大部分工作由MFC应用程序来完成,所以根本不必担心提供的WndProc()函数。在基于MFC的程序中,消息处理程序始终是应用程序的一个类的成员函数。对于特定消息和程序中为它提供服务的函数来说,它们之间的关联是由消息映射建立的——程序中处理Windows消息的每个类都有一个消息映射。类的消息映射是一个成员函数表,用于处理由一对宏界定的Windows消息。消息映射的开始由BEGIN_MESSAGE_MAP()宏表示,结束由END_MESSAGE_MAP()宏表示。消息映射中的每一项都将一个函数和一个特原创 2022-06-04 12:35:30 · 1053 阅读 · 0 评论 -
MFC:文档/视图
MFC程序的结构包括两个面向应用的实体:文档和视图。文档是应用程序中与用户交互的数据集合。文档类是从MFC库中的CDocument类派生的,需要添加数据成员来存储应用程序需要的数据,还要添加成员函数来支持对数据的处理。MFC支持单文档界面(Sigle Document Interface,SDI),每次只打开一直文档的程序。MFC也支持多文档界面(Multiple Document Interface,MDI)。使用MDI,程序不仅能够打开类型相同的多个文档,还可以同时处理多个类型不同的文档,各个文档显示在原创 2022-06-04 09:29:32 · 2226 阅读 · 0 评论 -
MFC简介
所有MFC类的名称都以C开始。MFC类的数据成员以m_作为前缀。要得到完整的程序,只需要从MFC中派生两个类即可:应用程序类和窗口类。根据CWinApp派生自己的应用程序。从MFC类CFrameWnd派生一个窗口类。 Create lpszClassName 指向命名 Windows 类的以空字符结尾的字符串。类名可以是使用 AfxRegisterWndClass 全局函数或 RegisterClass Windows 函数注册的任何名称。如果为 NULL,则使原创 2022-06-05 07:49:38 · 379 阅读 · 0 评论 -
MFC与Windows编程
MFC:Microsoft Foundation Classes,它封装了WIN32/WIN64功能,在MFC应用程序中,可以使用一组标准类,它们把我们与Windows API隔离开。Windows API称为WINAPI或WIN32/WIN64。直接使用WINAPI是最费力的开发应用程序的方法。任何Windows应用程序与Windows本身之间的所有通信,都要使用Windows应用程序编程接口,称作WindowsAPI。Windows程序是事件驱动的,因此Windows程序要等待某个事件发生。WndPro原创 2022-06-03 15:24:42 · 907 阅读 · 0 评论 -
序列容器和关联容器
序列容器vector 类 | Microsoft Docshttps://docs.microsoft.com/zh-cn/cpp/standard-library/vector-class?view=msvc-170创建矢量容器矢量容器的容量和大小访问矢量中的元素在矢量中插入和删除元素在矢量中存储类对象矢量元素的排序存储矢量中的指针双端队列容器deque 类 | Microsoft Docs详细了解:deque 类https:/...原创 2022-05-29 20:31:44 · 439 阅读 · 0 评论 -
标准模板库-容器
标准模板库STL(Standard Template Libarary)是一个标准类与函数模板的库。STL包含容器、容器适配器、迭代器、算法、函数对象和函数适配器。容器用来存储和组织其他对象的对象。T是存储在容器中的元素类型的模板类型形参。K是键的类型。分配器大多数STL容器会自动增大其容量来容纳所需存储的元素,这些容器的附加内存用一个名为分配器的对象来提供。分配器一般会在需要时分配堆上的内存。vector<T>模板实际上是一个vector<T,原创 2022-05-28 12:35:39 · 229 阅读 · 0 评论 -
类的继承和虚函数
类的继承派生类不能继承基类的析构函数、构造函数以及任何重载赋值运算符的成员函数。基类的派生类class CBaseClass{ //基类}class CDerivedClass:CBaseClass{ //派生类}继承机制下的访问控制基类中的private数据成员,派生类中添加的成员函数不能访问它们,只有通过不属于基类private部分的基类成员函数(public、protected),才能在派生类中访问它们。派生类中的构造函数派生类不原创 2022-05-26 21:29:19 · 1755 阅读 · 0 评论 -
字符串的库类
string头文件中定义了表示字符串的string和wstring类。将这两个类都定义为类模板basic_string<T>的实例:string类定义了为basic_string<char>,string类表示char类型的字符串。wstring类定义为basic_string<wchar_t>,wstring类表示wchar_t类型的字符串。创建字符串string string_name1 {"some sentences"};string原创 2022-05-25 21:04:26 · 398 阅读 · 0 评论 -
类(二):深入理解
类的析构函数析构函数析构函数用于销毁不再需要或超出其作用域的对象。对象超出其作用域时,程序将自动调用类的析构函数。销毁对象需要释放该对象的数据成员(静态成员除外)占用的内存。析构函数名= ~ + 类名 。析构函数没有特定的名称,没有任何形参,所以一个类只有一个析构函数。给析构函数指定返回值或形参时错误的。默认的析构函数如果没有定义自己的析构函数,编译器会自动生成默认的析构函数。默认的析构函数不能删除在空闲存储器中分配的对象或对象成员。如果类的成员占用的空间是在构造原创 2022-05-25 19:48:44 · 339 阅读 · 0 评论 -
类的私有成员、this指针、const对象、静态成员、类对象的指针和引用
类的私有成员定义类成员时使用关键字private,私有类成员只能被类的成员函数访问。必要时,public函数成员可以提供对包括private成员在内的所有类成员的间接访问。如果没有另外指定,默认访问特性是private。#include "pch.h"#include <iostream>#include <iomanip>#include <string>class CPerson{//private: 可以省略 std::s原创 2022-05-23 21:26:18 · 841 阅读 · 0 评论 -
类的构造函数
构造函数的概念原创 2022-05-23 19:05:15 · 3783 阅读 · 0 评论 -
自定义数据类型:类
类ClassMFC采用了所有类名前以C作为前缀的约定。类是用户定义的数据类型。 类的实例称为对象。 对象在定义中隐式地包含数据和操作数据的函数,这种思想称为封装。类的数据项称为数据成员,函数的类成员称为函数成员或成员函数。定义类class class_name{ public: //data member //function member private: //data member //function member原创 2022-05-22 19:52:20 · 483 阅读 · 0 评论 -
自定义数据类型:数据结构
任何用结构做到的事情,都可以用类做到。数据结构struct定义结构[template-spec] struct [ms-decl-spec] [tag [: base-list ]]{ member-list} [declarators];[struct] tag declarators;template-spec 可选模板规范。 见模板规范。 struct struct 关键字。 ms-decl-spec 可选存储类规范.原创 2022-05-22 18:10:59 · 323 阅读 · 0 评论 -
C++函数模板
函数模板有一个或多个类型形参,通过为模板的每个形参提供具体的类型实参来生成具有的参数。使用函数模板template<class T> T function_name(T param, ...){ //user code retrun return_value; //type T}template<typename T> T function_name(T param, ...){ //user code retrun return_value; //t原创 2022-05-22 16:48:01 · 235 阅读 · 0 评论 -
C++函数的重载
函数重载的概念函数重载允许使用相同的函数名定义多个函数,条件是这些函数的形参列表各不相同。所有函数都有签名,函数的签名由函数名称和形参列表确定。程序中所有函数都必须有唯一的签名,否则不能编译程序。#include "pch.h"#include <iostream>#include <iomanip>int add(int, int);double add(int, double);double add(double, int);double add(原创 2022-05-22 13:44:03 · 147 阅读 · 0 评论 -
C++程序结构
函数的命名规则与变量相同。调用时指定的实参传递信息。函数函数的结构函数头return_type function_name (parameter_list)返回值类型 函数名 函数形参函数体{}内的代码块形参和函数体内声明的所有变量都是该函数的局部变量,返回值是生成的副本。同名局部变量会屏蔽全局变量。#include "pch.h"#include <iostream>int a = 99;int main() { int a =原创 2022-05-22 13:15:06 · 412 阅读 · 0 评论 -
数组、字符串和指针
数组数组就是一组名为数组元素或简称元素的内存位置,各个内存位置可以存储相同数据类型的数据项,我们可以用相同的变量名引用所有的内存位置。存储各个元素所需的内存量取决于元素的类型,数组的所有元素都存储在连续的内存区域中。声明数组type arrayName[size];数组声明时,在紧随数组名的方括号内指出数组元素的数量。初始化数组type arrayName[size]{ value 1,value 2,...,value n};指定的初始值不能比数组元素多,但原创 2022-05-20 21:51:48 · 1303 阅读 · 0 评论 -
判断和循环
比较运算符< 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 != 不等于 逻辑运算符&& 逻辑与 两边条件都是true,才是true 如果&&运算符左边的操作数为false,则不再对右边的操作数求值 || 逻辑或 两边之一或全部为true,结果为true 如果||运算符左边的操作数为true,则不再对右边的操作数求值 !..原创 2022-05-19 19:52:32 · 95 阅读 · 0 评论 -
数据、变量、计算
程序注释①连续斜杠//②/**/为界#include指令——头文件①#include<>编译器只搜索包含标准头文件的目录②#include“”编译器先在包含此指令的源文件所在的目录搜索头文件。如果头文件未找到,编译器再搜索存储标准头文件的目录。名称空间和using声明名称空间是一种机制,它可以将无意中使用重名的风险降至最低。作用域解析运算符::using告诉编译器,要在不指定名称空间名称的情况下使用名称空间中的名称。在头文件中应避免把usi原创 2022-05-18 20:54:09 · 207 阅读 · 0 评论