笔试强训选择题day08

重载函数

在这里插入图片描述
函数重载:在相同作用域,函数名相同,参数列表不同的一系列函数称为函数重载。
参数列表不同表现为:参数个数,类型,顺序不同。
与函数返回值无关。

引用和指针的区别

在这里插入图片描述
b选项
在这里插入图片描述
E选项:引用底层是使用指针来实现的,引用的本质就是一个指针
在这里插入图片描述
在这里插入图片描述
看到反汇编中将a,b地址压栈

类的访问权限

在这里插入图片描述

构造函数的使用

在这里插入图片描述
创建了sample对象,需要调用构造函数,有int *对象,析构函数用delete删除空间。
这个show给对象解引用,输出数字。

  • p没有指向不能解引用

调用拷贝构造函数的情况

在这里插入图片描述
拷贝构造函数:是一个对特殊的构造函数,是单参的,参数类型必须是类类型的引用&,一般情况下会使用const进行修饰
A(const A& a)
调用时机:当用已经存在的对象构造新对象时,编译器会自动调用拷贝构造函数

调用场景:
在这里插入图片描述

C选项,换个说法是:如果函数参数是已知的方式进行对象传递时,也会将实参拷贝构造为形参

拷贝构造的调用次数

..
在这里插入图片描述
优化后
在这里插入图片描述
用代码调试来看下

int cnt = 0;
class B
{
public:
	B()
	{
		cout << "B::B()" << this << endl;
	}

	B(const B&)
	{
		cnt++;
		cout << "B::B(const B&)" << this << endl;
	}

	~B()
	{
		cout << "B::~B()" << this << endl;

	}
private:
	int _b;
};

B f(B b)
{
	B v(b);
	B w = v;
	return w;
}

int main()
{
	B b;
	B y = f(f(b));

	return 0;
}

在这里插入图片描述

友元函数重载

在这里插入图片描述
当用户定义了一个类之后,让偶想要通过该类的对象直接使用某种运算符,编译器不支持。
因为类对象中可能有多个成员,在用该类的对应进行相应的运算符操作时,编译器是不知道的(比如date日期比大小)

运算符重载:
1.重载成类的成员函数:形参数组看起来比该运算符需要的参数个数少一个(因为成员函数有隐藏的*this)
2.重载成类的友元函数:必须有一个参数是类类型的对象。

构造和析构函数的调用顺序

在这里插入图片描述

内存管理

在这里插入图片描述
都需要手动操作

阅读代码题

在这里插入图片描述
静态成员变量是所有成员共享的
new对象是会调用构造函数
delete对象时会调用析构函数


版权声明:本文为m0_59074850原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。