C++
Sun Shiteng
这个作者很懒,什么都没留下…
展开
-
stack / heap ?
?原创 2022-03-07 19:36:08 · 73 阅读 · 0 评论 -
static ?
?转载 2022-03-02 16:43:23 · 93 阅读 · 0 评论 -
C++调用C函数 / 使用extern “C“ { }
.cpp程序中调用.c文件中定义的函数,编译无错误,但连接时出错。在.cpp文件中,使用extern “C” { },将.c文件对应的头文件包含在内,问题解决编译通过。实际上这个操作是把libaxidma.h中所有的函数声明都包括在了extern “C” { }中。参考文章:https://www.cnblogs.com/shijiaqi1066/p/6349243.html...原创 2021-11-25 11:21:17 · 387 阅读 · 0 评论 -
类继承的关键字
对于三种继承,对基类里的private对象处理方式都是一致的,即对派生类都是不可访问的,但它确实被继承了,可以通过基类里的函数来访问。三种继承的不同之处在于:公有继承是将基类的public和protected成员直接继承不改变其属性(即继承后依然是public和potected的),保护继承将基类的public和protected成员直接继承为派生类的protected成员。而私有继承则直接将基类的protected和public成员继承为派生类的private成员。不难发现,存在着这样的一个转载 2021-10-26 16:42:02 · 1438 阅读 · 0 评论 -
int main(int argc, char const *argv[ ])
argc 是argument count的缩写表示传入main函数中的参数个数,包括这个程序本身argv 是 argument vector的缩写表示传入main函数中的参数列表,其中argv[0]表示这个程序的名字在上面两个名词的解释中提到“这个程序”,所谓的“这个程序”就是包含main函数的程序。可能这样说还是不太能理解,不妨用一个例子来说明一下什么是“这个程序”。代码如下(test.c文件并编译链接形成test.exe(linux下生成test)可执行文件):#include <stdi转载 2021-10-26 16:24:12 · 3402 阅读 · 1 评论 -
类的关键字protected
protected和private的相似之处:在类外,只能用公有类成员来访问protected部分中的类成员。protected和private的不同之处:它们的区别只有在基类派生的类中才会表现出来,派生类的成员可以直接访问基类的保护成员,不能直接访问基类的私有成员。...原创 2021-10-26 15:49:07 · 458 阅读 · 0 评论 -
语义移动 move semantics
vector<string> allcaps(const vector<string> & vs){ vector<string> temp //code than stores an all-uppercase version of vs in temp return temp;}vector<string> vstr;//build up a vector of 20,000 strings,each of 100原创 2021-09-15 10:03:12 · 100 阅读 · 0 评论 -
Eigen::Matrix用法
https://www.cnblogs.com/houkai/p/6347648.htmlMatrix类在Eigen,所有的矩阵和向量都是Matrix模板类的对象,Vector只是一种特殊的矩阵(一行或者一列)。Matrix有6个模板参数,主要使用前三个参数,剩下的有默认值。Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>Scalar是表示元素的类型,RowsAtCompileTime为矩阵的行,转载 2021-09-15 09:52:06 · 2263 阅读 · 0 评论 -
虚函数virtual
在类Base中加了Virtual关键字的函数就是虚拟函数。基类的函数调用,如果有virtual则根据多态性调用派生类的,如果没有virtual则是正常的静态函数调用,还是调用基类的。1、虚函数的应用看下面的一段代码的输出结果:class Base{public:Base(){}public: virtual void print(){cout<<"Base";}}; class Derived:public Base{public:Derived(){}p原创 2021-08-14 16:30:20 · 706 阅读 · 0 评论 -
构造函数 默认构造函数
1. 构造函数2. 默认构造函数用于在未提供显示初始值时创建对象并初始化,如:stock stock0;2.1 定义默认构造函数的两种方式给已有的构造函数的所有参数提供默认值通过函数重载来定义——一个没有参数的构造函数...原创 2021-08-09 11:59:53 · 594 阅读 · 0 评论 -
左值 右值 左值引用 右值引用 引用与指针的区别?
在这里插入图片描述原创 2021-04-29 17:46:39 · 282 阅读 · 0 评论 -
函数指针 函数指针数组
三个函数原型const double * f1(const double ar[ ] , int n);const double * f1(const double [ ] , int);const double * f1(const double * , int);这三个函数原型其实是一模一样的(除了函数名)从函数原型 得到 函数指针const double * (*p1)(const double * , int) p1即为指向该函数的函数指针。函数指针指向函数在内存中开始.原创 2021-03-31 17:03:55 · 66 阅读 · 0 评论 -
数组指针 和 指针数组
首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;p[n]:根据优先级,先看[],则p是一个数组,再结合,这个数组的元素是指针类型,原创 2021-03-31 14:30:01 · 194 阅读 · 1 评论 -
new运算符
变量是在编译时分配的 有名称的内存;new 在运行阶段 分配未命名的内存 以存储值int * pr = new int;只能通过指针访问该int。需要在两个地方指定数据类型:指定需要什么样的内存,声明合适的指针。int higgens;int * pt = &higgens;可以通过名称访问该int,也可以通过*pt访问该int。3.使用new来创建动态数组通常,对于大型数据(如数组、字符串、结构),应使用new。通过声明穿件数组,始终占用内存,在编译时给数组分配原创 2021-03-31 12:39:58 · 373 阅读 · 0 评论 -
二维数组
ar2[ ][ ]是一个二维数组int (*ar2)[4]是数组指针,ar2是指向有4个int的数组的指针,下面的形式表达的也是这个意义int ar2[ ][4]int* ar2[4]是指针数组,ar2[4]表明这是一个数组,int*表明数组的元素是指针ar2指向数组的第一个元素(编号为0),而这每一个元素都是由4个int组成的数组;ar2[r][c]=*(*(ar2+r)+c)ar2+r是指向数组的指针;*(ar2+r)则是指向这个数组第一个元素的指针;等同于ar2[r原创 2021-03-30 16:16:37 · 111 阅读 · 0 评论 -
#include <iostream> 和 using namespace std;
#include <iostream>该编译指令导致预处理器将iostream文件的内容添加到程序中。这是一种典型的预处理器操作:在源代码被编译之前,替换或添加文本。事实上,iostream文件的内容将取代程序中的代码行#include 。如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:using namespace std;这是using编译指令。名称空间支持是一项c++特性。仅当头文件...原创 2021-03-30 13:27:52 · 6425 阅读 · 0 评论