在C++中默认产生6个类成员函数,即缺省函数,它们分别是: 1.缺省构造函数2.缺省拷贝构造函数3.缺省析构函数4.缺省赋值运算符5.缺省取址运算符6.缺省取地址运算符const对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺省的构造函数、一个拷贝构造函数、一个析构函数、一个赋值运算符、一对取址运算符和一个this指针。1. 构造函数定义及调用 1) c++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的函数叫做析构函数; 2) 构造函数在定义时可以有参数; 3) 没有任何返回类型的声明2.拷贝构造函数的目的就是完成对一个对象的拷贝,一般在一下三种场景下会调用该对象的拷贝构造函数:1)函数返回类型是类的对象时2)函数的参数是类的对象,调用该函数时会调用该类的拷贝构造函数3)使用一个对象去初始化类的另一个对象时 F a = new F(1,2); F b = a; / F b(a) 注意必须要在类的初始化中使用,不是类的赋值注:为什么自定义拷贝构造函数必须是引用传递(&)而不能是值传递?因为防止无限递归,因为如果是值传递则会再一次调用拷贝构造函数 3. 析构函数的定义及调用1) c++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数2) 析构函数没有参数也没有任何返回类型的声明3) 析构函数在对象销毁时自动被调用4.运算符重载函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型operator操作符(参数列表)赋值运算符主要有四点:1)参数类型2)返回值3)检测是否自己给自己赋值4)返回*this5)一个类如果没有显式定义赋值运算符重载,编译器也会生成一个,完成对象按照字节序的值拷贝。5.取地址成员函数,分为两种,普通取地址操作符、const取地址操作符。取地址是什么意思呢?就是返回当前对象的地址,对于成员函数来讲,this指针就是它的地址,需要返回指针。6.this指针有哪些特性呢1)this是一个指针,它时时刻刻指向你这个实例本身。2)this指针的类型 类类型 *const3)this指针并不是对子昂本身的一部分,不影响sizeof的结果4)this指针的作用域在类成员函数的内部5)只有在类的非静态成员函数中才可以使用,其它任何函数都不可以
|