9月24日笔试总结

c++构造函数有哪几种

  • 默认构造函数
  • 初始化构造函数
  • 拷贝构造函数
  • 转换构造函数

这里重点介绍转换构造函数:

转换构造函数

当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数所在的类对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A
{
private:
int age;
int b;
public:
A():age(0),b(0) {};
A(int a,int b):age(a),b(b){}
A(int a):age(a),b(0){}
A & operator +(const A & c)
{
this->age += c.age;
this->b += c.b;
return * this;
}
}

A s(10,2);
s + 9;///执行过程

- 首选调用+号运算符,发现9不是A类的对象,而是int类型
- 然后调用转换构造函数,将9变为A(9)
- 现在便可以进行加法运算

c语言函数值类型缺省定义时,默认是int型

x++和++x的坑

1
2
3
x++ 只能作为右值,而 (++x) 既可作为左值又可作为右值。(意思就是 x++ 只能放在赋值号右面。)
因为x++是把x的值增一,并返回x原来的值,这个值并不储存在变量x的内存地址中,是计算时的一个临时值,
因此不能向它赋值。而++x是将x的值增一,并返回x的值,因此可以向这个变量赋值。

#