
C++
文章平均质量分 82
C++ MFC
酒红
这个作者很懒,什么都没留下…
展开
-
CMake介绍(1) - 常用命令及语法
CMake简述1. CMake简介 CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装编译过程。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。 CMake的所有语句都写在一个叫CMakeLists.txt(组态档)的文件中。当CMakeLists.txt文件确定后,可以用cmake命令对相关的变量值进行配置。这个命令必须指向CMakeLists.txt所在的目录。配置完之后,应用cmake命令生原创 2021-09-18 01:22:48 · 619 阅读 · 0 评论 -
gcc/g++编译器的使用
1. gcc编译器简介 gcc原名是GNU C Complier,支持C语言的编译链接,也支持C++、object-c等语言的编译链接。 根据《深入理解计算机系统(第三版)》第1.2小节内容,gcc将一个源程序文件转换为最终的可执行程序需要经过预处理、编译、汇编、链接四个阶段。2. 常见的编译选项 cc和gcc 命令是一样的,只是gcc命令的简化。另外,...原创 2019-06-28 21:22:34 · 1929 阅读 · 0 评论 -
C\C++常见基础编程题(1)
1. 编写下面类String的构造函数、拷贝构造函数、赋值运算符和析构函数。class String { friend String operate+( const String &s1, const String &s2);public: String(const char *str=””); ~String(void); String(const String &other); String& operate = (con原创 2020-11-07 15:37:47 · 347 阅读 · 0 评论 -
C\C++常见基础面试题目(2)
1. C++中哪些函数不能被声明成虚函数?答:(1) 普通函数,即非成员函数。普通函数只有重载overload的概念而没有覆盖override的概念;(2) 构造函数不能是虚函数,因为构造函数本身就是为了明确初始化类对象成员,构建类对象而存在的;(3) 静态成员函数不能是虚函数,因为静态成员函数不属于任何类对象,是所有类对象共享,并不涉及动态绑定;(4) 友元函数不能是虚函数,因为友元关系既不能传递也不能继承,既然和继承无关,自然没有声明为虚函数的必要;(5) 内联函数不能声明为虚函原创 2020-11-07 15:22:06 · 277 阅读 · 0 评论 -
C\C++常见基础面试题目(1)
1. C++面向对象语言有哪三个主要特征。答:封装、继承与多态性。2. 类中const、reference、或某个类类型成员变量在哪里进行初始化?答:只能通过构造函数初始值列表进行初始化。3. .h头文件中的ifndef/define/endif作用。答:防止头文件重复包含4. #include<file.h>和#include "file.h"的区别? 答:前者是从标准库中开始寻找头文件,后者是从当前工程目录下开始查找。5. 一个指针可以是volatile吗.原创 2020-11-07 00:29:51 · 695 阅读 · 1 评论 -
编写一个计算器程序,实现简单的加、减、乘、除、取余二元运算
方法一:结合lambda表达式、函数调用运算符、标准库函数对象、C++11标准新增的标准库function类型,编写一个简单的计算器,可实现简单的加、减、乘、除、取余二元运算。代码如下:#include "pch.h"#include <iostream>#include <functional>#include <map>#include &...原创 2019-05-15 22:20:41 · 24391 阅读 · 0 评论 -
直接初始化与拷贝初始化
C++语言有几种不同的初始化方式。如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化(copy initialization),编译器将等号右边的初始值拷贝到新创建的对象中去。与之相反,如果不使用等号,则执行的是直接初始化(direct initialization)。string s1 = "hiya"; // 拷贝初始化string s2("hello"); // ...原创 2019-05-12 17:30:49 · 2724 阅读 · 0 评论 -
笔记:类型转换运算符
类型转换运算符(conversion operator)是类的一种特殊成员函数,它负责将一个类类型的值转换成其他类型。类型转换函数的一般形式是:operator type() const;其中,type表示转换目标类型,除了void、数组或函数类型,但允许转换成指针(包括数组指针及函数指针)。类型转换运算符既没有显式的返回类型,也没有形参,而且必须定义为类的成员函数。类型转换运算符通常...原创 2019-05-17 01:23:50 · 2323 阅读 · 0 评论 -
解析while(cin >> value)条件判断
学习C++很久了,但是对于while(cin >> value)这样的条件判断语句一直都没能真正搞明白,最近学习了类型转换运算符相关方面的知识才恍然大悟。类型转换运算符详细内容可参考《C++ Primer》第五版14.9节的内容,或者个人博客“笔记:类型转换运算符”。#include <iostream>using namespace std; int main...原创 2019-05-17 11:07:01 · 16781 阅读 · 5 评论 -
C++程序如何输入文件结束符(end-of-file)
从键盘输入文件结束符(end-of-file): 在Windows系统中,输入文件结束符的方法是按Ctrl+Z,然后按Enter或Return键。 在Unix系统中,包括在Mac OS X系统中,文件结束符输入Ctrl+D。示例:在while循环中,cin只有在遇到文件结束符(end-of-file),或遇到一个无效输入时(例如输入的值不是一个整数),cin的状态会变为无效...原创 2019-05-06 20:33:25 · 14410 阅读 · 1 评论 -
C++中如何初始化类中const或引用类型的数据成员?
在C++中,如果没有在构造函数初始值列表中显示地初始化成员,则该成员将在构造函数体之前执行默认初始化。之后,再进入构造函数体{}中,随着构造函数体一开始执行,初始化地工作实际上就完成了。下面两个构造函数,虽然执行后,成员变量的值都一致,但过程和效率却不一样。第一个构造函数,使用构造函数初始化列表,效率更高;而第二个构造函数,没有在初始值列表中显示地初始化,所以实际是先进行了默认初始化,然后再进...原创 2019-05-09 13:46:10 · 3226 阅读 · 0 评论 -
C++ Primer 第5版——shared_ptr和StrBlob类
《C++ Primer》第五版,第12章,主要是介绍了动态内存与智能指针方面的知识点。C++ 11新标准,提供了两种智能指针类型shared_ptr和unique_ptr来管理动态内存。智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。我们平时创建动态内存及释放内存的方式,例如:int *pt = new int(11);delete pt;使用智能指针的方...原创 2019-05-06 18:03:36 · 788 阅读 · 1 评论 -
C++标准IO库 - 文件流对象的使用
#include "stdafx.h"#include "stdlib.h"#include #include #include using std::fstream;using std::ofstream;using std::ifstream;using std::string;using std::cout;using std::cin;using std::endl;原创 2014-10-24 11:13:04 · 760 阅读 · 0 评论 -
图像控件Picture —— 修改Picture控件属性显示图像
本文介绍使用图像控件显示图像信息。 使用图像控件显示图像的最简单的方法是使用图像控件的属性窗口。首先,在对话框中放置一个Picture Contorl控件,然后在资源视图窗口中导入位图文件,导入成功后,在资源视图窗口中会显示ID为IDB_BITMAP1的位图资源(如下图左所示): 然后修改Picture Control的属性,将其Type属性设为Bitm原创 2014-12-30 11:04:54 · 4603 阅读 · 0 评论 -
Visual Studio修改可执行程序的文件名和路径
通常我们使用Visual Studio创建的项目工程,生成的可执行程序文件名与工程的名称一致,例如工程名为Test,则生成的可执行文件文件名通常为Test.exe。但有时候我们希望工程生成的可执行文件的名称与工程名称不一样,或者希望生成的可执行文件保存在其他路径下,则可以通过以下步骤来实现。1. 在Visual Studio 2008下选择菜单栏“项目”-“属性原创 2016-01-13 15:20:59 · 30466 阅读 · 0 评论 -
Visual Studio 类图功能Class Diagram
Visual Studio 的一个很强大的工具就是Class Diagram类图(不是Class View类视图),可以利用类图对项目编辑和修改,非常方便。原创 2015-12-29 19:04:51 · 38430 阅读 · 3 评论 -
C++ 容器适配器
除了顺序容器(可变大小数组vector、双端队列deque、双向链表list、单向链表foward_list、固定大小数组array、字符串string)之外,C++标准库还定义了三个顺序容器适配器:stack、queue和priority_queue。适配器(adapter)是标准库中的一个通用概念。容器、迭代器和函数都有适配器。本质上,适配器是一种机制,能使某种事物的行为看起来像另外一种事...原创 2019-04-21 21:06:52 · 230 阅读 · 0 评论 -
C++Primer第五版 代码案例排错(1):"public: class Screen & __cdecl Screen::set(unsigned __int64,unsigned __int
“无法解析的外部符号 "public: class Screen & __cdecl Screen::set(unsigned __int64,unsigned __int64,char)" (?set@Screen@@QEAAAEAV1@_K0D@Z),该符号在函数 main 中被引用”最近在学习《C++ Primer》第五版,第7章类。根据书中案例,编写了Screen类,因为一开始...原创 2019-04-13 22:47:54 · 345 阅读 · 0 评论 -
C++单词转换程序
给定一个string,将它转换成另一个string。程序的输入是两个txt文件,第一个文件保存转换规则(如下WordMap.txt),用来转换第二个文件中的文本(如下InFile.txt)。WordMap.txt中每一行是一条转换规则,每条转换规则由两部分组成:一个单词和一个用来替换它的语句。要求:根据WordMap.txt中的转换规则,转换InFile.txt的内容,并将转换内容保存到outpu...原创 2019-05-01 23:58:29 · 1144 阅读 · 0 评论 -
文本查询程序
设计程序目的:我们的程序允许用户在一个给定的文件中查询单词。查询结构是单词在文件中出现的次数及其所在行的列表。如果单词在一行中出现多次,此行只列一次,行按升序输出。设计方案:(1) 我们将用一个vector<string>来保存整个输入文件的一份拷贝。输入文件中的每行保存为vector中的一个元素。当需要打印一行内容时,可以用行号作为下标来提取文本。(2)我们使用一个i...原创 2019-05-08 15:16:57 · 305 阅读 · 0 评论 -
添加库文件的方法
文章来自:http://blog.chinaunix.net/uid-9672747-id-4233194.htmlvs2010中加入附加库的方法总结:法一:1、直接在某个头文件(例如:stdafx.h)中使用#pragma comment(lib,"库文件名")的方法 。注意:采用上面的写法时有前提条件的,即库文件在当前目录下或是在项目---》###属性---》vc++目转载 2014-10-12 17:21:19 · 1367 阅读 · 0 评论