笔试强训选择题day9,10

这篇博客介绍了C++中的函数参数、动态内存分配、静态成员变量、内联函数、运算符重载、拷贝构造函数、常成员函数以及模板等核心概念。强调了new和delete的匹配使用、静态成员变量的特性、构造函数与析构函数的区别、内联函数的优化作用以及类成员的访问权限。此外,还讨论了构造函数调用次数和类大小的计算规则,以及如何理解和处理const变量。
摘要由CSDN通过智能技术生成

day 9

函数声明

在这里插入图片描述
函数参数是引用,那我们传int 类型的变量就行了
C、D选项,a不是指针无法解引用
B选项,不需要传地址

new和delete

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此题是new T[] ,会调用N次构造函数
但使用的是delete直接删除所指向的空间

这种操作不正确,应该匹配使用

动态内存分配

在这里插入图片描述
malloc申请的空间一定是在堆上,但new不一定,要根据使用者,但默认调用malloc申请的空间还是在堆上

静态成员变量

在这里插入图片描述
静态成员变量:
1.所有对象共享的,并不属于具体的某个对象
2.在类中声明,然后需要在类外单独进行定义
3.一定不能在构造函数初始化列表的位置初始化
4.在类外访问静态成员变量时:对象.静态成员变量或着类名::静态成员变量

在这里插入图片描述

类成员的访问属性

在这里插入图片描述
class默认访问权限时private
struct默认访问权限时public

运算符的重载

在这里插入图片描述

每个非静态的成员函数都有一个隐藏的this指针
一元运算符:该元素只需要有一个参数,例如:++ –

前置++:Date& operator++()
后置++:Date operator++(int)

构造和析构

在这里插入图片描述

new的使用

在这里插入图片描述
创建对象时不会调用析构函数
在这里插入图片描述

模板的参数列表

在这里插入图片描述
常见的模板声明
在这里插入图片描述
有多个参数时,每个参数之前都必须加上class或typename

1.没参数
2.没class 或者typename
3.少了一个
5.少了一个
8.没关键字

day 10

内联函数

在这里插入图片描述
内联函数:在C++中被inline关键字修饰的函数,在编译阶段,编译器会将函数调用的位置用函数体直接替换。少了函数创建期间,函数压栈,创建栈帧的操作,提高运行效率。
但inline是建议性关键字,建议编译器把这个函数当成函数体操作,编译器自行判断该函数是否够短,频繁调用,没有嵌套递归等复杂操作。

B选项:inline与静态变量没什么关系

运算符重载

在这里插入图片描述
记住以下四个运算符即可
在这里插入图片描述

拷贝构造函数特点

在这里插入图片描述
拷贝构造函数也是一种构造函数,所以函数名与类名相同。
单参的,而且是对本类对象的引用,建议用const修饰
用已经存在的对象创建新的对象

A选项,构造函数是没有返回值的
C选项,编译器默认生成拷贝构造函数是公有的

类的常成员函数

在这里插入图片描述
注意:C选项的const实际修饰的是this指针,表明在该成员函数中,不能修改非静态成员变量

重载函数调用依据

在这里插入图片描述
与函数类型无关

调用构造函数次数

在这里插入图片描述
a[5]:代表着5个Myclass对象的一个数组,需要调用5次Myclass类的构造函数
b:史记为一个指针数组,该数组中的每个元素都是一个Myclass*,里面放的都是地址,所以创建的时候不会调用构造函数

  • List item

初始化列表初始次序

在这里插入图片描述
在初始化列表中初始化成员的次序:与该成员在初始化列表中的先后次序没有关系,真正的初始化次序与成员变量在类中声明的先后次序保持一致

类的大小

在这里插入图片描述
类大小的计算方式:将类中非静态成员变量大小相加,注意内存对齐,与结构体大小计算方式类似。
与成员函数没有关系,类中只存成员变量,成员函数存在于代码段。

注意:空类大小不为0,在主流编译器将空类的大小设为1

阅读代码题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
a类型:const int
&a类型:const int*
所以需要强转(int*)

注意:C++中被const修饰的变量,该变量已经是一个常量了,还具有替换的作用。
在编译器编译代码,在程序中看到对常量内容读取时,会直接使用常量中的内用替换该常量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值