类和对象的六个默认成员函数之this指针与构造函数

类和对象的六个默认成员函数之构造函数

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

类的六个默认成员函数

  1. 构造函数
  2. 拷贝构造函数
  3. 析构函数
  4. 赋值操作符重载
  5. 取地址操作符重载
  6. 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.构造函数的作用

  • 构造&初始化对象
  • 类型转换

猜你喜欢

转载自blog.csdn.net/liu_zhen_kai/article/details/81262008