C++基础

1.C语言与c++的区别?
C语言是面向过程的语言,C++是面向对象的程序语言

2:类和对象的关系
类是对象的类型,对象是类的具体实例。如果学生就是一个类型,而学生张三就是一个具体的对象

3:一个类由几个部分组成?
成员变量和成员函数。
4:构造函数有什么用
构造对象时对对象的初始化

5:构造函数的特点
1,必须公有
2,构造函数和类名一致
3,无返回值;
4,构造函数可以接受参数用来初始化类的数据成员

6:什么是默认构造函数
默认构造函数分为两种:1:构造函数不带参数 2:构造函数带参数但参数有默认值

7:程序员在定义类时是否必须写一个构造函数,为什么
不必须,如果程序员一个构造函数都没写,编译器将提供一个空的默认构造函数,他不会对数据成员进行初始化。一旦程序员提供的构造函数,编译器将不提供默认构造函数。

8:什么是函数重载,并举例说明
1:参数列表不同(a,参数个数不同,b,参数类型不同)
2:仅仅返回值不同不能算函数重载
Thing();
Thing(int a);
Thing(int a,int b);

9:什么是初始化列表,有什么作用,什么情况下必须使用初始化列表?

在构造函数的函数头,对类的成员变量进行初始化。
初始化列表优势:
1:效率高
2:有一些类型的成员变量,只能用初始化列表的方式进行初始化

10:什么是const成员函数,它有什么作用,
const成员函数:函数体内,不能够修改这个类的成员变量的值。
void printPoint()const; //一般用于Print,get等函数
作用:增加程序的健壮性

11:析构函数有什么作用,析构函数在什么情况下被调用
析构函数用于释放对象所占的资源空间,当一个对象被销毁时会自动调用析构函数

12:一个雷是否必须要定义一个析构函数,什么情况下必须使用析构函数
如果类的成员阐述是基本数据类型时则不需要写虚构函数,但是当类的成员有指针变量指向了堆空间,即动态分配内存时,必须显式的销毁分配在堆上的空间,用delete回收指针指向的内存空间。避免内存泄露。

13:什么是浅拷贝,浅拷贝会产生什么问题。
可以把一个对象赋值给另一个对象,对象的每个成员的值,将一对一的拷贝到新的对象,这种拷贝叫逻辑拷贝,或浅拷贝。但是如果对象函数指针成员变量,而指针变量又指向了堆上空间,将只拷贝指针成员变量本身的值,造成两个对象的指针指向了同一块堆上的内存空间,杉树对象时造成二次删除。

14:什么是函数链,使用函数链要注意什么问题
用一个函数调用另一个函数,如middle(p,q).print(); 使用它函数链时必须注意前一个函数的返回值必须是对象

15:能否返回一个指向局部变量的指针或引用,为什么?
不能,局部变量在函数结束后会自动被系统回收,那么指针将变成野指针,引用将会变成无效的引用,导致程序会有意想不到的结果发生

16:Point middle(const Point &p1,const Point &p2);解释该函数参数中的const 和&的作用是什么
& 作用:为了避免拷贝,可以节省内存空间,提高工作效率,加const是为了避免在函数体内修改形参的值。

17:什么是this指针,解释对象调用成员函数时传递对象的过程
每个对象都隐式的包含了一个成员变量,叫this.this是一个指针,指向对象自己。即this指针里保存的地址,就是对象自己在内存里的地址。
当一个类对象调用成员函数时会默认将该对象传递给该函数,在函数体内不直接使用对象名,而是使用this指针,即this指针是指向该对象,指向调用者,谁调用该函数,this指针就指向谁。

18:静态局部变量和局部变量的区别,静态局部变量和静态全局变量的区别

  局部变量存在栈中,作用域为函数体内,生命周期:函数结束后被系统回收。
  静态局部变量放在静态存储区,作用域为函数体内,生命周期:函数返回后,静态局部变量的内存空间不会被回收;当下一次调用该函数时,静态局部变量依然保持上一次调用时退出的值。
静态全局变量也存储在静态存储区,作用域为从声明到整个文件的结束,生命周期:整个程序运行期间。

19:类的普通成员变量和静态成员变量的区别
某一个具体对象是无关对于非静态成员来说,每个对象都有一个特定的值,每个对象都为自己的非静态成员,在内存里保留一个位置。而静态成员,整个类中只有一份copy,不需要每个对象都保留一份copy,所有的对象都共享这块空间。

20:调用类的静态成员的两种方式是什么?
a:类名::静态成员名 :b对象.静态成员名

21: 使用类的静态成员变量时需要注意什么问题?
类的静态成员变量要在类体之外(用作用域::),对其进行初始化。

22:类的静态成员函数和普通成员函数的区别
静态成员函数,不能访问非静态成员变量和非静态成员函数。普通成员函数可以,访问静态成员 也可以范根非静态成员。

23:友元函数有什么用
友元函数可以访问类的私有成员。

24:使用友元函数的优缺点是什么
友元可以改善性能,但是破坏了封装

25:什么是操作符重载,为什么要操作符重载
用已存在的操作符操作其它类型的操作数(对象),称为操作符重载,操作符重载的目的就是让一些操作符可以直接操作对象

26:为什么要实现两个版本的下标重载?
const对象指向调用const成员函数,故要实现const版本的下标重载,而非const版本的下标重载用于写操作

27:简述浅拷贝与深拷贝的区别
浅拷贝指的是两个对象的指针成员指向同一块空间,而深拷贝是让两个对象的指针成员指向各自的独立空间。

28:赋值运算符重载的5步
1:避免自赋值,避免把一个对象赋值给它自己。
2:释放掉指针成员已经指向的内存,避免内存泄露
3:为指针成员开辟新内存空间
4:内容本身的copy
5:返回 *this

29:C++中什么时候回调用拷贝构造函数。
通过拷贝一个已有的对象,来创建一个新的对象。
1.classT object(anothier_object); 把已经存在的对象,作为新声明对象的构造函数的参数。
2.classT object = another_object; 声明一个对象,并用赋值表达式,用一个已有对象来初始化它。
3.用传值得方式,从函数返回一个对象,也将调用拷贝构造函数。

30:c++的空类,编译器会默认提供哪些成员函数
一个缺省的构造函数,一个拷贝构造函数,一个析构函数,一个赋值运算符

31:简述C++中的继承
子类继承父类所有的成员,但不包括构造函数,析构函数和赋值运算符重载,子类继承父类后子类的成员有两部分,一个继承父类的成员而是子类自己扩展的成员

32:子类继承父类后,子类的成员包括几部分?
子类继承父类后子类的成员有两部分,一是继承之父类的成员 二是子类自己扩展的成员。

33:什么是函数重写。
子类可以自己实现与父类成员函数原型相同(函数名,参数列表)的成员函数,称为重写

34:子类重写父类的函数后,能否用子类对象调用到被覆盖的父类版本的函数?
可以,在子类中调用被覆盖的父类版本的函数时,在函数名前加 父类类名::

35:子类能否直接访问父类的”私有”成员,有几种方式可以访问到该”私有”成员
1:通过继承之父类的公有成员函数来访问继承之父类的私有成员
2:将父类的私有成员改为protected成员
36:简述public.protected.private三中继承方式的区别
私有继承:子类中所有继承父类的成员
保护继承:继承自父类的public成员。变成子类的protected成员:而继承自父类的protected和private,访问权限保持不变
公有继承:所有继承自父类的成员,访问权限都保持不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值