C++类(一)

类的默认成员函数

一. 类的六个默认成员函数:

1、构造函数 2、拷贝构造函数 3、析构函数 4、赋值操作符重载 5、取地址操作符重载 6、const修饰的取地址操作符重载

  1. 【构造函数】 
    成员变量为私有的,要对他进行初始化,必须用一个公有成员函数来进行。同时这个函数应该有且仅在定义对象时自动执行一次,这时调用的函数为构造函数(constructor)。 
    (1)函数名与类名相同。 
    (2)无返回值。 
    (3)构造函数可以重载。 
    (4)构造函数可以在类中定义,也可以在类外定义。 
    (5)如果类定义中没有给出构造函数,则C++编译器自动产生一个缺省的构造函数,但只要我们定义了一个构造函数,系统就不会自动产生缺省的构造函数。 
    (6)对象构造时(对象实例化)系统自动调用对应的构造函数。 
    (7)无参的构造函数和缺省值的构造函数都认为是缺省构造函数,并且缺省的构造函数只能有一个。

  2. 拷贝构造函数 
    创建对象时使用同类对象来进行初始化,这是用的构造函数称为拷贝构造函数,他是特殊的构造函数。 
    (1)拷贝构造其实是构造函数的重载。 
    (2)拷贝构造函数的参数必须使用引用传参,使用传值会应发无穷的递归效应。 
    (3)若未显示定义,系统会默认缺省的拷贝构造函数,缺省的拷贝构造函数,会以此拷贝类成员进行初始化。

  注:在类的成员函数中可以直接访问同类对象的私有/保护成员。2.C++的访问限定符是以类为单位的,也就是说在这个单位内的成员可以互相访问。

析构函数:

当一个对象的生命周期结束时,C++编译系统会自动调用一个成员函数,这个特殊的成员函数即析构函数(destructor). 

(1)析构函数在类名加上字符~。 
(2)析构函数无参数,无返回值。 
(3)一个类有且只有一个析构函数,若未显示定义,系统会自动生成缺省的析构函数。 
(4)对象生命周期结束时,C++编译系统自动调用析构函数。 
(5)主义析构函数体内并不是删除对象,而是做一些清理工作。

class Date

{

public:

Date(int size)

 {

ptr = (int*)malloc(size* sizeof(int));

}

~Date()//完成清理工作,(释放空间) 

{

if(ptr)

{

free(ptr);

ptr = 0;

}

}

private:

int _year;

int _month;

int _day;

};

运算符重载

为了增强程序的可读性,C++支持运算符的重载。 
特征: 
(1)operator+合法的运算符构成函数名(重载<运算符的函数名:operator<). 

(2)重载运算符以后,不能改变运算符的优先级/结合性/操作数个数。

5个C++不能重载的运算符:

1  .(点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的
 
2  ::(域运算符)即类名+域运算符,取成员,不可以重载
 
3  .*(点星运算符,)不可以重载,成员指针运算符".*,即成员是指针类型
 
4  ?:(条件运算符)不可以重载
 
5  sizeof不可以重载


猜你喜欢

转载自blog.csdn.net/cainiao000001/article/details/79647011