重载函数
函数重载:在相同作用域,函数名相同,参数列表不同的一系列函数称为函数重载。
参数列表不同表现为:参数个数,类型,顺序不同。
与函数返回值无关。
引用和指针的区别
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版权协议,转载请附上原文出处链接和本声明。