随笔分类 - 面试
1
构造函数为什么不能定义成虚函数
摘要:如果构造函数是虚函数的话,首先要通过虚函数指针在虚函数表中找到构造函数的地址,而构造函数还没有被调用虚函数指针就没有被初始化,因此就不能通过虚函数指针调用构造函数。
阅读全文
虚函数指针和虚表
摘要:虚函数指针是一个指向指针数组(定义类对象时, 编译器自动将类对象虚函数指针指向这个虚函数表)的void类型的指针(void**),虚表是一个一维数组,无论是类指针还是类引用还是实例化base1,base2它们只有一个虚函数指针和一个虚函数表,也就是说虚函数指针和虚函数表是属于类的(也就是被所有对象共
阅读全文
虚函数和纯虚函数
摘要:虚函数有函数体,纯虚函数没有函数体只是让它等于0 虚表中存储着虚函数的地址,纯虚函数在虚表中的值为0 纯虚函数定义了一个接口规范,带有纯虚函数的抽象类不能实例化,这就强制抽象类的子类必须实现所有的纯虚函数才能实例化 对c++中虚函数和纯虚函数的理解_c++虚函数和纯虚函数的作用_麦田里的守望者_zh
阅读全文
SGM重要代码摘抄
摘要:初始代价空间的形成 Census变换 void CensusTransform() const; 1 // 逐像素计算census值 2 for (sint32 i = 2; i < height - 2; i++) { 3 for (sint32 j = 2; j < width - 2; j++
阅读全文
SGM
摘要:提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况下并不成立导致匹配效果较差;而另一方面全局算法虽然通过二维相邻像素视差之间的约束(如平滑性约束)而得到更好的匹配效果,但是对内存的占用量大,速度慢。 由于代价计算步骤只考虑了局部的相关性(也就是比较两个像素邻域像素的关系,
阅读全文
15.在main执⾏之前和之后执⾏的代码可能是什么
摘要:之前:初始化全局变量和静态变量 初始化全局对象(构造函数) 将argc和argv传参 之后: 全局对象的析构
阅读全文
14.初始化和赋值的区别
摘要:初始化是定义变量或对象的时候就给它们初始值 赋值是先定义变量或对象(此时可以初始化,如果不初始化的话编译器默认初始化),再给它们赋值的时候就先擦除它们的当前值(默认初始化的值,或则显示初始化的值),然后再以一个新的值代替。 1 #include <iostream> 2 using namespac
阅读全文
13.拷贝初始化和直接初始化
摘要:如果使用等号初始化一个对象执行的是拷贝初始化,如果不使用等号初始化一个对象执行的是直接初始化。直接初始化直接调用与实参匹配的构造函数,这也包括拷贝构造函数,就能够完成初始化。 拷贝初始化通常调用拷贝构造函数,拷贝初始化首先调用某一构造函数构造一个临时的对象,然后调用拷贝构造将临时对象拷贝到正在创建的
阅读全文
12.override和final
摘要:子类成员函数后面override代表这个函数是重写父类的虚函数 父类名字后面加final或则父类中的虚函数后面加final(只有虚函数后面能加final),则不允许有子类继承该父类或则不允许子类重写父类的虚函数
阅读全文
11.数组名和指针(这⾥为指向数组⾸元素的指针)区别
摘要:1 int main() 2 { 3 int a[2] = { 1,2 }; 4 int* p = a; 5 cout << "a+1" << a + 1 << endl; 6 cout << "p+1" << p + 1 << endl; 7 cout << "*(a+1)" << *(a + 1
阅读全文
static和const
摘要:static static修饰的变量存储于全局区,而初始化的和未初始化的在全局区分开储存,如果没显示初始化会被程序自动初始化为0 对于局部变量 static延长了它的生命周期,即不随函数的销毁而销毁,只有程序运行结束才会销毁 static使得局部变量只在第一次调用的时候初始化,之后的调用不再初始化,
阅读全文
10.define和const的区别
摘要:define生效于编译预处理阶段,const生效于编译阶段 define只是简单的字符串替换,在编译预处理阶段将所有用到宏的地方进行字符串替换,没有进行数据类型检查;const有数据类型,编译器要对其进行类型检查 define不分配内存,而const在静态区分配内存,因此define没有地址,不可以
阅读全文
9.C++中struct和C语言中的struct的区别
摘要:C++中的stuct有继承多态,可以使用私有进行隐藏,可以封装函数,C语言没有以上功能。 1 struct Student{ 2 }; 3 Student st;//C++允许,C语言不允许,C语言应该是struct Student st; 4 //想要实现相似功能C语言应该按以下方式定义结构体 5
阅读全文
8.C++中的struct和class的区别
摘要:C++中class默认是私有,struct默认是公有这是两者唯一的区别。该默认体现在成员和继承两方面,不指定成员类型的时候class默认是私有,struct默认是公有,class默认是私有继承,struct默认是公有继承。其他情况可以使用class的地方struct也能使用。
阅读全文
7.C++和Java
摘要:C++桌面应用比Java好,而Java在Web应用上相比C++更有优势 对于底层程序的变成和控制方面的编程C++更灵活
阅读全文
6.C++和C的区别
摘要:内存分配和释放:C++采用new和delete,C语言采用malloc和free C++iostream库包含了istream和ostreamn来表示输入输出流,一个流就是一个字符序列(字符序列是由一系列字符组成的有序集合。字符可以是字母、数字、标点符号或其他特殊字符。字符序列通常是以字符串的形式表
阅读全文
4.C++和Python
摘要:C++是编译性语言,Python是解释性语言 C++编译链接的全过程分为: 预编译 预编译会执行以下内容: 宏替换 执行条件编译:#ifdef,#ifndef,#endif #include后面文件内容插入并替换当前行 删除注释 编译 编译会执行以下内容: 检查有没有语法错误,没有的话转换为汇编语言
阅读全文
3.数组与指针(a和&a)的区别
摘要:定义一个数组: int a[4]={0,1,2,3};a是数组名,它是数组的首地址,a+1表示第二个元素的地址,*(a+1)=a[1]。 定义两个指针: int(*p)[4]=&a;这说明&a和int(*p)[4]一样都是int(*)[4]类型表示指向数组的指针,&a+1,p+1操作后两者就指向了数
阅读全文
2.sizeof和strlen
摘要:sizeof sizeof是运算符 sizeof运算符返回表达式或则一个类型名所占的字节数,其返回值是一个size_t类型的常量表达式。 size_t是一种与机器无关的无符类型,足够大能够表示内存中任意对象的大小 常量表达式是指值不会发生改变,在编译过程中就能得到计算结果的表达式,常量表达式必须是一
阅读全文
1.new/delete/malloc/free
摘要:new/delete new和delete是C++中的运算符,不是库函数,不需要库的支持。 new的工作机理 string *sp=new string("a value");//一个new表达式 new表达式调用一个operator new(或者operator new[])的标准库函数,该函数分
阅读全文
1
浙公网安备 33010602011771号