- 博客(24)
- 收藏
- 关注
原创 编译、链接(静态库、动态库)
1:预处理g++ -E 源文件.cpp -o 生成文件.i2:编译:g++ -S 源文件.i -o 生成文件.s3:链接(静态库 、动态库)1:动态链接:(1):g++ -shared -fPIC -o libmathapi.so add.cpp xxx.cpp xxx.cpp(2):g++ -o main mian.cpp -L. -lmathapi (生成main)(3):./main 此时会报错error while loading shared libraries: li.
2021-10-05 10:12:43
493
原创 第15章 面向对象程序设计 <基本定义>(第五点及其重要)
核心思想:数据抽象、继承和动态绑定。数据抽象:将类的接口和实现分离。继承:可以定义相同类型并对其相似关系建模。动态绑定:可以再一定chengxushang
2021-06-17 17:01:50
188
原创 形参实际意义
#include <stdlib.h>#include <iostream> //这是一个关于引用形参,const形参,指针形参的程序,用于理解不同形式的区别using namespace std;//非引用形参:是“实参”的一个拷贝副本,修改“形参”不影响“实参”//const常量:值不可修改//非引用非const形参和非引用const形参均可由const或非const实参初始化int use_ptr1(int val)//非引用非const形参{ .
2021-06-08 20:35:08
357
原创 动态内存
程序内存分为静态内存、栈内存、堆内存。静态内存储存static变量、类static变量、定义在函数之外的变量(程序自动创建和销毁)栈内存定义在函数内的非static变量(程序运行时存在。编译器自动销毁)堆内存程序用堆来储存动态分配的对象(必须显示的销毁。)动态内存和智能指针new在动态内存中为对象分配控件并返回一个指向该对象的指针,我们可以选择对对象进行初始化delete接受一个动态对象的指针,销毁该对象,并释放与之关联的内存动态内存的使用
2021-04-14 14:08:29
71
原创 容器、迭代器
1,顺序容器概述1)vector :可变大小数组;支持随机访问。尾部之外插入或删除数据可能很慢。 vector<变量> 名称; 使用:名称[]。2)deque:双端队列;支持快速随机访问。在头尾位置插入/删除很快。3)list:双向链表。不支持随机访问;只支持双向顺序访问;在list中任何位置进行插入/删除速度很快。4)forward_list:单向链表。不支持随机访问;在链表中任何位置进行插入/删除速度很快。5)array:固定大小数组。不能添加删除元素。1),2)可以通过下
2021-04-10 17:23:09
307
原创 回调函数带参数 用法及其注意点
//callbackTest.c//1.定义函数onHeight(回调函数)//@onHeight 函数名//@height 参数//@contex 上下文void onHeight(double height, void* contex){ sprint("current height is %lf",height);}//2.定义onHeight函数的原型//@CallbackFun 指向函数的指针类型//@height 回调参数,当有多个参数时,可以定.
2021-03-02 20:36:31
4994
原创 c++ 类基本定义
类的基本思想是数据抽象和封装;数据抽象是一种依赖接口和实现分离的编程技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需要的的私有函数和成员。(简单理解:接口对外,实现对类内部)...
2021-03-02 17:13:30
1242
1
原创 函数形参和const int &形参
接口函数1,形参不确定类型时可以使用decltype;例如:返回s中出现的c的次数。string::size_type findchar(const string &s ,char c,string::size_type &occurs){ auto ret =s.size(); occurs=0; for((decltype(ret)i =0;i!=s.size();++i)){ **//(decltype(ret)i 可以把i的类型和s.size的类型一致。
2021-02-20 11:00:56
1504
原创 优快云字体颜色速成
<font color=#0099ff size=4 face="黑体">+文章+</font>#0099ff 是颜色 或者 color=red
2021-02-03 11:45:08
122
原创 多线程实现方法(加锁 不加锁)
线程创建原因在多线程应用程序中,当多个线程共享相同的内存时,如同时访问一个变量时,需要确保每个线程看到一致的数据视图,即保证所有线程对数据的修改是一致的。一个典型的例子是,在一个多线程程序中,两个及以上个线程对同一个变量i执行i++操作,结果得到的值并不如顺序执行所预期的那样。这就是线程间不同步的一个例子。== 每个线程使用的变量都是其他线程不会读取和修改的变量是只读的== 则可以不用加锁流程如下1:锁初始化;static pthread_mutex_t mutex;pthread_mut
2020-10-28 18:14:40
2457
原创 函数用法
函数1:值传递 :你不想改变原有的值或者属性,只想做逻辑上操作。void mySwap(int a,int b){int tmp =a;a=b;b=tmp;cout << "mySwap::a=" << a <<endl;cput << "mySwap::b=" << b <<endl;}void func(){int a=10;int b=20;mySwap(a,b);//值传递cout <<
2020-10-14 14:21:28
608
原创 c++重要特性之一 :多态
虚函数和多态虚函数在类的定义中,前面有virtual 关键字的成员函数就是虚函数。class base {virtual int get();};int base:: get(){};与普通函数的差别:虚函数可以参与多态,普通函数不行。多态表现形式一:1,子类(派生类)的指针可以赋值给基类指针(父类指针);2,通过父类指针调用父类和子类中的同名虚函数时:若该指针指向一个父类的对象,那么被调用的是父类的虚函数。若该指针指向一个子类的对象,那么被调用的是子类的虚函数。class C
2020-10-08 19:55:58
137
原创 c++引用 & const 应用
引用概念:1.定义引用时,一定要将其初始化成引用某个变量。2.初始化后,它就一直引用该变量,不会再引用其他变量。3.引用只能引用变量,不能引用常量和表达式例如int n=4;int &r =n;//r引用了n,r的类型是int &某个变量的引用,等价于这个变量,相当于该变量的一个别名。下面第一个例子不太实际。void swap(int &a ,int &b){ int tmp; tmp =a; a=b; b=tmp;}int main(){
2020-10-08 18:49:33
224
2
原创 入门 linux 常见命令必备
1.常用命令cd/pwdpwd :查看当前所在路径cd :切换目录用法1: cd /+路径名字 (绝对路径:路径名字写完整)以后尽量用这种用法2: cd … (相对路径)用法3: cd~ (家目录)ls:查看文件和目录列表ls -l :查看详细目录。linux一般用-来传多个参数。touch:创建一个文件,若文件不存在,则新建。若存在,则更改时间为当前。 touch abc.txtcp: 复制文件或者目录。1.cp 源路径 目标路径cp abc.txt /home/myte
2020-10-08 09:50:46
267
2
原创 组合,继承,子类父类
组合用已有的对象组合出新的对象。engine 和tyre 是已知的类,他们组合成一个新类 car。2种模式Fully:在新类里面By reference;通过指针。继承我拿已有的类,在这个类的基础上做些改造,来创建一个新的类。新类比原来的类数据更多。父类的私有变量子类不能直接调用组合是改变类的对象,继承是改变类学生继承person类。person是基类,父类。学生类 是子类public,protected ,private 基本用法public :所有人都能动protected:
2020-09-28 11:11:42
139
原创 c++ 类访问限制 (private ,public,protected)
class 和struct其实都是类。用法差不多。唯一的不同点是,如果变量没有给访问属性,那么class 就指定private(私有),struct就相当于public(共有)public所有人都能访问。private只有在该类的函数可以访问 ,而不是所谓的.cpp文件。同一个类的不同对象也可以访问私有变量。Friends:当你申明别人是你的朋友之后,别人就可以访问你的私有变量了。《别人:别的类或者其函数,别的函数》例如:struct X; //声明一个类struct Y{void
2020-09-25 20:19:41
658
原创 内存(new delete )
newnew 就是程序运行过程中申请空间的一种方式。你可以通过指针去访问这个地址。deletedelete:当你用完这个对象之后,把内存还给内存池的一种方式。Dynamic Arrays(动态申请数组)int *p =new int ;int *a=new int [10];假设student 是个类student *q =new student ();student *r =new student[10]delete p;a++ ;delete[] a;delete q;del
2020-09-25 17:12:54
1183
原创 Constructor(构造函数) and Destructor(析构函数)
构造函数它是一种机制,他能保证我们的对象只要创建出来就可以被初始化。构造函数没有返回类型,他在类对象被创建的时候自动被调用。析构函数析构函数:在类对象结束之前会被调用 ,他是不带参数的。constructoranddestructoe.h#ifndef CONSTRUCTORANDDESTRUCTOR_H#define CONSTRUCTORANDDESTRUCTOR_H#include <QWidget>class ConstructorAndDestructor : p
2020-09-24 15:51:02
561
原创 one day 2020.09.23 成员变量
成员变量的秘密(one day)本地变量 : 函数参数: *他们属于函数内部定义的变量(本地存储)。*成员变量(fields):定义在类里面,整个类的成员函数都可以调用。假设在类里面定义一个 private int i;这个i只是一个东西,所有成员函数都可以调用。而且相当于C语言的全局变量 (自己这样理解比较方便)。一个类可以被不同对象调用。假设类里面只有一个变量,那么类里面的变量地址和类的对象地址一样。23:30 this(一般在类的成
2020-09-24 11:56:23
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人