
c++
朴人
alias cd='rm -rf'
展开
-
windows平台,mingw64编译环境下的socket使用
代码并不重要,主要看最后的编译命令://test.cpp#include <winsock2.h>#include <iostream>using namespace std;int main(){ WSADATA ws; WSAStartup(MAKEWORD(2, 2), &ws); SOCKET s = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN addrSrv; add原创 2021-07-05 14:18:01 · 3322 阅读 · 0 评论 -
windows平台,mingw64编译使用matplotlibcpp
编译以下代码://test.cpp#include "matplotlibcpp.h"namespace plt = matplotlibcpp;int main() { plt::plot({1,3,2,4}); plt::show();}编译命令:g++ test.cpp -DWITHOUT_NUMPY -ID:\application\miniconda3\include -LD:\application\miniconda3 -lpython38注意自行更改pytho原创 2021-07-05 13:44:38 · 419 阅读 · 0 评论 -
linux平台的三种动态库路径设置方法
方法一:LD_LIBRARY_PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/path建议在~/.profile最后增加一行,写入上述命令。方法二:/etc/ld.so.conf用sudo权限在/etc/ld.so.conf文件最后新增一行动态库路径,比如写入/usr/local/lib。然后命令行运行sudo ldconfig。方法三:gcc添加编译选项-Wl,-rpath=/your/path:/your/path2比如gcc原创 2021-05-18 15:11:06 · 4933 阅读 · 0 评论 -
C++中的强制类型转换:static_cast、const_cast、reinterpret_cast、dynamic_cast
在C++中,用括号方式进行强制类型转换是旧式的,比如(int)1.666。现代的做法是用四种cast,static_cast、const_cast、reinterpret_cast、dynamic_cast,语法是cast-name(expression)。1. static_cast用于基础简单类之间的转换,比如int,double,char之间。也用于有血缘关系的类指针的转换,这意味着char* 于int* 无法转换。其他指针层级的转换请使用reinterpret_cast。2. const原创 2020-10-14 10:58:50 · 213 阅读 · 0 评论 -
gcc/g++ 生成、使用动态库/静态库
生成动态库:gcc -shared so.c -o libso.so有时候会报错提示加上-fPIC(-flag position-independent code,为了生成位置无关代码,用全局偏移的方式,一份动态库即可给多份主程序使用,细节自己网上查吧),加上就行了。libso.so文件注意lib前缀和.so后缀。动态库命名格式是规定好的,细节自己网上查。使用动态库:gcc main.c -L. -lso -Wl,-rpath=/home/me/test【-L】编译时动态库所在的目录。原创 2020-10-11 10:59:55 · 1021 阅读 · 0 评论 -
c/c++ 数组名是指针吗?使用汇编分析
结论在前:数组名是纯地址值,不是指针。反汇编的方法分析:void fun(int *a,int *b){}int main(){ int a[]={1}; int bb=1; int *b=&bb; fun(a,b); fun(a,&bb);}使用g++ -g temp.cpp编译出二进制,并使用objdump -S a.out进行反汇编,以下为截取的部分汇编代码: int a[]={1}; 1177: c7 45 f4 01原创 2020-10-09 17:27:13 · 473 阅读 · 1 评论 -
C++ 通过类继承的多态实现原理以及虚函数表改写时机
class Parent{public: virtual void func() { cout << "Parent" << endl; }};class Child : public Parent{public: void func_child() { cout << "func_child" << endl; } void func() { cout << "Child" << endl; }};int原创 2020-10-06 16:10:58 · 339 阅读 · 0 评论 -
C++ 虚函数多态的意义
假设A是父类,里面有virtual fun()。B、C是public继承的子类,override了fun()。创建对象引用,多态有以下代码:B b;C c;A& n=b;A& m=c; n.fun();m.fun();我在想,多态有什么意义呢?为什么要把子类引用给父类呢?这不是多次一举吗?直接B& n=b; C& m=c; 他不香吗?反正都是两行代码,分配的内存空间也是一样大小的,性能也没有差别。说白了,多态的意义就在于写代码更通解,并能够减原创 2020-10-05 19:57:50 · 270 阅读 · 0 评论 -
c++ string类的字符在内存的储存位置
以下数据均在ubuntu 64位系统,g++ c++11情况下测试1. 数据&amp;amp;lt;=16字节,在当前栈区#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;using n原创 2018-11-29 11:19:21 · 3583 阅读 · 2 评论