pointer-like classes 开放智能指针 template<class T>class shared_ptr{public: T& operator*() const { return *px; } T* operator->() const { return px; } shared_ptr(T* p): px(p) {}private: T * px; long* pn;}pointer-like classes 开放迭代器template<class T,class Ref, cl
linux调试gdb core #SIGSEGV 11 /* Segmentation violation (ANSI). */ 建立CORE文件,段非法错误ulimit -c unlimited #使用生成core文件#向程序发送11,建立core文件,段非法错误ps -aux |grep youappkill -11 pid#core文件生成位置/var/lib/apport/coredump#调试core文件gdb yourapp /var/lib/apport/coredump/core.**
clang+llvm+linux x86平台交叉编译arm64 下载工具链workPATH=`pwd`/toolchainmkdir -p $workPATHcd $workPATHURL_LLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"URL_GCC_LINARO="http://releases.linaro.org/components/to
C++代码的编译流程 预处理→编译→汇编→链接预处理:预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。gcc的预处理是预处理器cpp来完成的,2.编译:这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程。汇编:汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式链接:链接过程将多个目标文件以及所需的
linux平台交叉编译arm64库 1.构建工程时指定工具链cmake -DCMAKE_TOOLCHAIN_FILE=/home/…/gnu_arm64.cmake2.CMAKE_TOOLCHAIN_FILE 交叉编译文件#工具链文件 gnu_arm64.cmakeset( CMAKE_SYSTEM_NAME Linux )set( CMAKE_SYSTEM_PROCESSOR arm )SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")SET(CMAKE_SHARED_LIBRARY_SUFFIX
C++ 仿函数 function-like classes 仿函数 class ShorterThan { public: explicit ShorterThan(int maxLength) : length(maxLength) {} bool operator() (const string& str) const { return str.length() < length; } private: const int len
转换函数(conversion function)c++ conversion functionclass Fraction{public: Fraction(int num,int den=1) :m_numerator(num),m_denominator(den) {} operator double() const {//可以转换为double return (double)(m_numerator / m_denominator) }private: double m_numerator;//分子 double m_denomi
Linux+Tomcat+Mysql+Xwiki+Nginx配置 Tomcat操作基本安装操作:http://www.cnblogs.com/EasonJim/p/7202844.html/opt/tomcat8/bin/shutdown.sh 关闭tomcat/opt/tomcat8/bin/startup.sh 启动tomcatXwiki+Mysql的基本配置涉及Mysql数据库的下载安装,xwili库的下载.参考连接:https://blog.csdn.net/forrest_ou/article/details/68068685Nginx基本配
C++ 类模板,函数模板,static,namespace staticclass Account{public: static double m_rate;//类中声明 static void set_rate(const double &x) { m_rate=x; }};double Accoutn::m_rate=1.2;//类外定义int main(){ //调用静态函数的方式有两种 Account::set_rate(5);//通过class name调用 Account a;//通过object调用 a.set_r
String C++ 简单实现c++ 的stringclass String{public: String(const char* cstr=0); String(const String& str); String & operator =(const String &str); ~String(); char * get_c_str() const { return m_data; }private: char* m_data;}//ctorinline String::St
C++堆栈管理 Stack (栈) heap(堆)Stack,是存放在作用域(scope)的一块内存空间(memory space).例如当你调用函数,函数本身会形成一个stack用来放置接收到的参数,以及返回值.程序自动清理在函数本身(function body)内声明的任何变量,其所使用的内存块都取自上述stack.heap,或所谓system heap,是指由操作系统提供的一块global内存空间,程序可动态分配,(dynamic allocated),从而获得若干区块(blocks).static 静态对象
构造,拷贝构造,赋值构造函数C++ String Class#ifndef __MYSTRING__#define __MYSTRING__class String{public: //big tree 三个特殊的函数 String(const char* cstr=0);//构造函数 String(const String &str);//拷贝构造 String operator =(const String &str);//拷贝赋值 ~String();//析构函数 内存析构 离开作用域
C++操作符重载 操作符重载类的所有的成员函数隐藏this指针.reference:传递者无需知道接收者是以reference形式接受.//成员函数操作符重载inline complex& __doapl(complex *this,const complex&r){ return *this;}inline complex & complex::operator+=(const complex& r){ return _doapl(this,r);}C3+=C2
针对protobuf版本冲突问题解决办法 通过#define 重命名命名空间#ifndef __PROTOBUF_PREFIX_H__#define __PROTOBUF_PREFIX_H__#define google my_google #define protobuf my_protobuf#define internal my_internal#define compiler my_compiler#define io my_io#define util my_util#define converter my_conve
OpenSSL编译错误+CMake 编译调用出现错误# warning: gethostbyname is obsolescent, use getnameinfo() instead.# undefined reference to `getcontext'# undefined reference to `setcontext'# undefined reference to `makecontext'解决方案#cmake添加如下编译选择ADD_DEFINITIONS (-DOPENSSL_NO_ASYNC)ADD_DE
CMake设置使用OpenCV的静态库 #cmake变量BUILD_SHARED_LIB 是一个全局变量set(BUILD_SHARED_LIBS OFF)#例如设置使用opencv的静态库if(NOT DEFINED OpenCV_STATIC) # look for global setting if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) set(OpenCV_STATIC OFF) else() set(OpenCV_STATIC ON)
CMake调用boost库 CMake调用boost的编译脚本cmake_minimum_required(VERSION 3.14)project(boost_python)set(CMAKE_CXX_STANDARD 11)#指定boost根目录set(BOOST_ROOT E:/local/boost_1_61_0)#设置不适用系统的的boost的库set(BOOST_NO_SYSTEM_PATHS ON)#设置使用静态的boost库set(Boost_USE_STATIC_LIBS ON)#查找boost库