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

  • Post author:
  • Post category:其他


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

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.构造函数的作用


  • 构造&初始化对象

  • 类型转换



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