编程语言
文章平均质量分 91
关于java编程基础,C++编程,python编程,matlab编程
知愚
这个作者很懒,什么都没留下…
展开
-
cmake使用教程(实操版)(六)
一、复杂的例子:模块的使用和自定义模块本节着重介绍系统预定义的Find模块的使用以及自己编写Find模块,系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显示的调用,FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块。其实使用纯粹依靠cmake本身提供的基本指令来管理工程是一件非常复杂的事件,所以,cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake.在本章,我们准备首先介绍一下cmake提供的FindCURL模块的使用。然后,基于我们的libhello原创 2021-07-24 23:07:33 · 687 阅读 · 0 评论 -
cmake使用教程(实操版)(五)
一、cmake常用指令本节会引入更多的cmake指令。1、基本指令(1)ADD_DEFINITIONS向C/C++编译器添加-D定义,比如:ADD_DEFINITIONS(-DENABLE_DEBUG -DABC),参数之间用空格分隔。如果你的代码中定义了#ifdef ENABLE_DEBUG #endif,这个代码块就会生效。如果要添加其他的编译器开关,可以通过CMAKE_C_FLAGS变量和CMAKE_CXX_FLAGS变量设置。(2)ADD_DEPENGENCIES定义target依赖原创 2021-07-24 23:07:02 · 1025 阅读 · 0 评论 -
cmake使用教程(实操版)(四)
一、如何使用外部共享库和头文件使用上一节中构建的共享库。1、准备工作在cmake中创建t4用来存储这一节的资源。2、编码编写源文件main.c如下:t4下的CMakeLists.txt如下:t4下的src下的CMakeLists.txt如下:3、外部构建建立build文件夹,使用cmake …来构建。cmake ..make会的到如下的错误:/backup/cmake/t4/src/main.c:1:19: error: hello.h:没有那个文件或目录4、引入头文原创 2021-07-24 23:05:53 · 1246 阅读 · 0 评论 -
cmake使用教程(实操版)(三)
一、静态库与动态库构建本节建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串。安装头文件和共享库。1、准备工作在/backup/cmake中建立t3,用于存放本节涉及到的工程。2、建立共享库指令:cd /backup/cmake/t3mkdir lib在t3目录下建立CMakeLists.txt,内容如下:在lib目录下建立两个两个源文件hello.c和hello.h,在lib的目录下建立CMakeLis原创 2021-07-24 23:02:56 · 652 阅读 · 0 评论 -
cmake使用教程(实操版)(一)
cmake使用教程本文主要借鉴《CMake+Pratice》一文,如果造成版权问题请联系作者删除。作者在网络上发现关于cmake的中英文材料都比较少,所以有了整理cmake的入门教程的想法。如果需要深入了解cmake的各种命令,建议在已有的项目中学习。在介绍本文的cmake内容之前,本文将整个使用教程分成七篇文章。一、初识cmake官网:www.cmake.org优点:1、开源代码,使用类BSD许可发布。2、跨平台,并可以生成native编译配置文件,在linux/Unix平台,生成makefi原创 2021-07-24 22:38:35 · 19131 阅读 · 1 评论 -
cmake使用教程(实操版)
cmake使用教程目录一、初识cmakePS:绝大部分使用变量的情况要通过${}引用,而在IF语句中却必须直接使用变量名。官网:www.cmake.org优点:1、开源代码,使用类BSD许可发布。2、跨平台,并可以生成native编译配置文件,在linux/Unix平台,生成makefile,在苹果平台可以生成Xcode,在windows平台,可以生成MSVC的工程文件。3、能够管理大型项目。4、简化编译构建过程和编译过程。cmake的工具链:cmake+make。5、高效率,因为cma原创 2020-10-08 11:32:08 · 135148 阅读 · 15 评论 -
C++什么类不能被继承
C++什么类不能被继承什么类不能被继承,首先思考派生类继承基类将会发生什么默认操作?派生类在调用自身的构造函数之前需要先调用基类的构造函数。那么我们就让这个不想被别人继承的类的构造函数也无法被派生类构造。现在主要有三种方式阻止类的构造函数被调用,一是,将自身的构造函数与析构函数放在private作用域内;二是,将自身作为一个已存在类的友元类。这两种方式都能阻止派生类的继承(因为自身无法构造函数),第三种,使用C++新特性final。一、将自身的构造函数与析构函数放在private作用域当我们声明一个对原创 2020-08-17 21:55:52 · 4898 阅读 · 4 评论 -
C++——多态的原理与使用
C++——多态的原理与使用C++面向对象的三大特性——封装,继承,多态。本文主要说明多态的实现与原理。C++多态中又有三种方式实现,分别是函数重载、模板函数、虚函数。本文着重说明虚函数实现多态的方式和原理。一、虚函数与多态定义:虚函数指在派生类中重载同名的基类函数,而且可以通过基类指针或者引用来访问基类或者派生类的对象所对应的上述函数。PS:在类定义中,前面有virtual关键字的成员函数称为虚函数。virtual关键字只用在类定义里的函数声明中,写函数体时不用。class Base{ vi原创 2020-08-17 09:10:10 · 579 阅读 · 0 评论 -
C++的关键字const详解
C++的关键字const详解const为常量限定符,用来限定特定变量,告诉编译器该变量只读。习惯性使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。本文主要从四个方面来讨论const:(1)const修饰基本数据类型;(2)const在函数中的应用;(3)const在类中的应用;(4)const修饰类对象,定义常量对象。一、const修饰基本数据类型1、const修饰一般常量及数组const int a=10; <=>(等价) int const原创 2020-08-15 22:29:52 · 323 阅读 · 0 评论 -
左值引用与右值引用在移动语义中的使用
左值引用与右值引用在移动语义中的使用本文主要介绍C++11的新特性右值引用,以及右值引用在移动语义上的应用。1、左值引用与右值引用传统C++使用的是左值引用,使得标志符关联到左值。那么什么是左值呢?左值指的是一个表达数据的表达式。常常出现在=的左边,所以经常被称为左值。左值引用:表示数据的表达式,如变量名或者解除引用的指针。左值引用:int n;//n是左值int *pt = new int;//*pt是左值const int b = 101;//b是左值int &rn = n;/原创 2020-08-13 17:20:37 · 282 阅读 · 0 评论 -
C++一个简单的单例模式
一、单例模式直接阅读版:#include <bits/stdc++.h>class Singleton {public: ~Singleton() { printf("Singleton deconstruct\n"); }; static Singleton& CreateObject() { static Singleton obj; return obj; };private: Singleton() { printf("Singleton c原创 2020-07-06 22:33:08 · 289 阅读 · 0 评论 -
C++如何在main()函数之前或者之后执行打印操作
一、 gcc下的C语言#include <stdio.h> __attribute((constructor)) void before_main(){ printf("%s/n", __FUNCTION__);}__attribute((destructor)) void after_main(){ printf("%s/n", __FUNCTION__);}int main(int argc, char** argv){ printf("%s原创 2020-07-06 14:13:39 · 528 阅读 · 0 评论 -
static关键字C/C++中的使用
C++中static关键字的作用C++中的static关键字用于声明全局共享变量,位于内存中一块单独的全局变量区域内。static声明的变量会一直存在,C++的static在如果在代码块内,则声明的变量只能在代码块内使用,如果static声明不在任何函数内,则可以在此文件中使用。一、static在面向过程中的应用1、静态全局变量内存分配在全局数据区(.bss未初始化.data初始化)、未初始化的静态全局变量会初始化为0且只会初始化一次、静态全局变量只能在文件内访问不能在文件外访问。在其他文件中原创 2020-07-06 13:54:59 · 562 阅读 · 0 评论 -
菜鸟筑基——C++四种字符串类型的爱恨情仇
C++字符串详解一、C语言风格的字符串字符串是指使用‘\0’终止的字符串数组。char a[6]={'H','e','l','l','o','\0'};char* b = "Hello"; 以上的字符串在内存中的表示为函数作用strcpy(s1,s2)将s2字符串的内容复制给s1strcat(s1,s2)将s2字符串的内容拼接到s1后面,返回s1...原创 2020-05-04 00:19:13 · 465 阅读 · 0 评论 -
深入理解C++中string类(详解)
深入理解C++中string类背景介绍:在C++中使用string.h和cstring并不是所要介绍的string类指的是C语言库中字符串,而本文所要介绍的是string类。要使用string类主要是了解它的公共接口,也就是string类的众多方法。下面介绍的是string类的构造函数,主要用于将字符串赋值给变量、合并字符串、比较字符串、若干重载操作符、在字符串中寻找子字符串。一、构造字符串...原创 2020-04-11 23:57:44 · 2215 阅读 · 0 评论 -
C++Lambda匿名函数(详解)
C++Lambda匿名函数(详解)一、介绍使用场景:对于一些简单的函数程序只需要简单的使用一下,但是一般情况下是需要声明定义再使用这个函数。为了解决这个问题,C++11提出了匿名函数机制,可以不取函数名,当场定义当场使用,方便程序员编写程序。典型的匿名函数使用场景是在return语句中写出测试表达式和比较表达式。二、使用使用格式如下:int n = [](int x,int y)->...原创 2020-04-01 13:23:12 · 1156 阅读 · 0 评论 -
C++ 关键字explicit与函数memset()详解
一、关键字explicit总结:explicit关键字用在类的构造函数之前。使用环境:类构造函数只有一个参数或者其他参数都有默认参数。作用:防止类的对象参数类型进行不合时宜的转换。#include <iostream>class CxString//没有使用explicit关键字的类声明,即默认为隐式声明{public: char* _pstr; int _size; ...原创 2020-03-31 13:16:53 · 315 阅读 · 0 评论 -
C++内存管理(面试版)
C++的内存管理一、C++内存管理详解1、内存的分配方式(a)(a)(a)栈:编译器分配的内存,用来存储函数的局部变量,函数调用结合素则自动释放内存。(b)(b)(b)堆:程序员用new分配的内存,一般存储指针;如果程序运行结束的时候没有被释放,则操作系统会自动回收。(c)(c)(c)自由存储区:程序员用malloc分配的内存,使用free来释放内存。(d)(d)(d)全局/静态存储区...原创 2020-03-29 13:43:42 · 9005 阅读 · 4 评论