C++——成员指针

实例成员指针 实例成员指针是指向实例成员的指针,可分为实例数据成员指针和实例函数成员指针 构造函数不能被显式调用且只能执行一次,所以不能有指向构造函数的实例成员指针 运算符为 .* 和 ->* 实例成员指针是成员相对于对象首地址的偏移,不是真正代表地址的指针 实例成员指针不能移动 实例成员指针不能转换类型 静态成员指针 静态成员指针前不用加类作用域 静态数据成员指针与普通的变量指针相同 静态函数成员指针与普通的函数指针相同 案例 静态成员指针存放成员地址,实例成员指针存放成员偏移 静态成员指针可以移动,实例成员指针不能移动 静态成员指针可以强制类型转换,实例成员指针不能强制转换类型 class Crowd { public: int a; // 表示在本类中不会修改此变量 // 但其它进程有可能会修改,表示会有多进程并发 volatile int b; // C++17 支持 // 使用 inline、const 修饰 static 变量可在类体内进行初始化 const static int j = 3; static int num; public: Crowd(); Crowd(int x); ~Crowd(); // 类体内函数定义 // 会被内联处理 int f() { b++; cout << "F()\n"; return b; } // const this 指针,参数类型不同,所以可被重载 int f()const { cout << "const F()\n"; return b; } static int getNum(); static Crowd& dec(Crowd& a); }; // 静态成员变量类体外初始化 int Crowd::num = 0; Crowd::Crowd() { a = 0; b = 0; Crowd::num++; cout << "Crowd()\n"; } Crowd::Crowd(int x): a(x) { b = 0; Crowd::num++; cout << "Crowd(int)\n"; } Crowd::~Crowd() { Crowd::num--; } int Crowd::getNum() { return Crowd::num; } Crowd& Crowd::dec(Crowd& a) { a....

September 3, 2022 · 2 min · Rick Cui

C++——volatile、const、constexpr、inline、static

volatile 和 const 修饰的变量说明该变量在本程序内不应被修改,但其它程序是可以修改的 volatile 修饰变量,告诉编译器不要优化该变量,每次取值都重新从内存中获取 constexpr 和 inline 修饰的变量,编译器都会进行编译期优化 当对 inline 修饰变量进行取地址操作时,优化会失效 inline 修饰函数相当于 static,只能在当前文件中访问 inline 修饰的变量可以用任意表达式初始化,但这样不保证被优化 inline 其它介绍 static 限制修饰的变量和函数的可见作用域(模块内部),其它的都是副本

September 1, 2022 · 1 min · Rick Cui

GIS——GeoServer 发布 ArcGIS 切片的 WMTS 服务

一、部署环境和软件版本 操作系统 版本 win10 JDK 版本 OpenJDK11U-jdk_x64_windows_hotspot_11.0.16.1_1 GeoServer 版本 2.21.1 GeoWebCache 版本 1.21.1 二、说明 安装 JDK,配置 java 环境。 Windows 平台可安装 GeoServer Exe 安装包。 也可以通过 Tomcat 起动服务,需要下载 GeoServer 和 GeoWebCache 的 war 包,并放到 tomcat/webapps 目录下,如果只是发布切片服务,配置 GeoWebCache 即可。 三、软件下载 下载 GeoServer 也可GeoServer 官网下载 下载 GeoWebCache,解压待用 四、配置 GeoServer 将 GeoWebCache 中的 jar 包 \geowebcache\WEB-INF\lib\gwc-arcgiscache-1.21.1.jar 拷贝到 GeoServer 安装目录 \webapps\geoserver\WEB-INF\lib。 解压 GeoServer 安装目录下的 jar 包 \webapps\geoserver\WEB-INF\lib\gs-gwc-2.21.1.jar 到 gs-gwc-2.21.1 文件夹,将 GeoWebCache 中的 \geowebcache\WEB-INF\geowebcache-arcgiscache-context....

August 31, 2022 · 1 min · Rick Cui

STL——map 排序相关

声明变量时指定排序规则 通过指定模板的第三个参数,对象类型,C++ 2a 支持 lambda 对象 struct MyCom{ bool operator()(const string key1, const string key2)const{ return key1 > key2; } }; int main() { // lambda 表达式对象 auto cmp = [](const auto& key1, const auto& key2){return key1 < key2;}; map<string, int, decltype(cmp)> myMap1 = {{"RAM", 20}, {"GPU", 15}, {"CPU", 10} }; // 函数对象 map<string, int, MyCom> myMap2 = {{"CPU", 10}, {"GPU", 15}, {"RAM", 20}}; for(const auto& item : myMap1){ cout << item....

August 30, 2022 · 1 min · Rick Cui

ArcGIS Desktop 制作影像切片

ArcGIS Desktop 10.6 一、生成切片方案 打开 ArcGIS Desktop,打开 工具箱( Tools Box ) –> 系统工具箱( System Tools Box ) –> 数据管理工具( Data Managment Tools ) –> 切片缓存( Tile Cache )–> 生成切片缓存切片方案( Generate Tile Cache Tiling Scheme ) 重要参数: 切片格式( Tile Format ):主要是 PNGx、JPEG、MIXED,MIXED 混合格式,指的是在切片的时候,如果检测到瓦片内有透明区域,则这个瓦片使用 PNG32 格式,如果没有,则使用 JPEG 格式。这样做可以在不失去透明通道的前提下,有效降低瓦片数据文件的大小。 切片压缩质量( Tile Compression Quality ):仅对 JPEG(包括 MIXED 中使用 JPEG 的瓦片)有效,参数值需要介于 1-100 之间,默认是 75。 存储格式( Storage Format ): COMPACT 紧凑格式,也就是把多个瓦片(最多128x128个)存储到一个 bundle 文件的形式,避免出现大量碎文件; EXPLODED 分散格式,就是把每一个瓦片存储成一个图片文件,这个形式的瓦片不能和 tpk 包一起使用。 CGCS2000 切片方案...

August 29, 2022 · 1 min · Rick Cui