类和对象的六个默认成员函数之构造函数
this指针:
在C++中的成员函数也是按照C类似的方式处理的,即:成员函数实际上也有一个指针时隐藏的,指向了调用函数的对象本身,这个指针就是this指针
this指针特性:
-
this指针的类型:类类型* const
-
this指针并不是对象本身的一部分,不影响sizeof的结果
-
this指针的作用于在成员函数的内部
-
this指针时类成员哈数的第一个默认隐藏参数,编译器自动维护传递,编写者不能显示传递
-
只有在非静态成员函数中才能使用this指针, 其他函数都不可以
举例 :
#include <iostream>
using namespace std;
class test
{
public:
void addr()
{
cout << this << endl;
}
};
int main()
{
test t1;
t1.addr();
return 0;
}
//输出结果
//00B9FEBB
类的六个默认成员函数
-
构造函数
-
拷贝构造函数
-
析构函数
-
赋值操作符重载
-
取地址操作符重载
-
const修饰的取地址操作符重载
构造函数
1. 概念:
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
例子:
#include <iostream>
using namespace std;
class Date
{
public :
Date(int y = 1998, int m = 2, int d = 15)
:year(y)
,month(m)
,day(d)
{}
private :
int year;
int month;
int day;
};
int main()
{
Date d1;
return 0;
}
运行结果
2.构造函数特性
-
函数名与类名相同
-
没有返回值
-
新对象被创建时,由编译器自动调用,且在对象的生命周期里仅调用一次
-
构造函数可以重载,实参决定调用哪一个构造函数
-
无构造函数和带有缺省值的构造函数都被看作为缺省的构造函数,并且缺省的构造函数只能有一个
-
有初始化列表
-
没有显示定义时,编译器会自动合成一个默认的构造函数
-
构造函数不能用const修饰
-
构造函数不能为虚函数
3.对象初始化
初始化列表的使用:
-
每个成员在初始化列表中只能出现一次
-
初始化列表仅用于初始化类的数据成员,并不能指定其成员的初始化顺序,数据成员在类中定义顺序就是初始化列表初始化成员的顺序,所以初始化列表的顺序最好和成员的顺序一致
4.构造函数的作用
-
构造&初始化对象
-
类型转换
版权声明:本文为liu_zhen_kai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。