C++四个默认成员函数+运算符重载

来源:互联网 发布:数据库小项目 编辑:程序博客网 时间:2024/06/10 23:43

1   (1)类的定义

在C++中,用“类”描述“对象”,所谓的对象是指现实世界中的一切事物。

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类的一个具体实例,拥有类的成员变量和成员函数。


一个简单的类定义:

class student{public://成员变量char* name;int age;char sex;//成员函数void speak(){cout << name << "的年龄是" << age << endl;}};

(2)访问限定符


public:   声明了对类的外部接口,所有来自外部的访问通过接口进行。

private: 只允许本类的成员函数来访问,类外部的访问都是非法的。

protected: 介于公有和私有类型之间,对除本类及派生类以外的类不可访问。

注:

a.public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。

b.每个限定符在类体中可使用多次,它的作用域是从该限定符出现开始到下一个限定符之前或类体结束前。

c.类体中如果没有定义限定符,则默认为私有的

d.类的访问限定符体现了面向对象的封装性

3)面向对象封装性

封装是实现信息隐蔽的一种技术,其目的是使类的定义和实现分离。

 4)类实例化对象

a.类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它。

b.一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间存储类成员变量。


2   四个默认成员函数


1)构造函数

私有成员变量要对它们进行初始化,必须用一个公有成员函数进行,同时这个函数应该有且在定义对象时自动执行一次,这时调用的函数称为构造函数

构造函数是特殊的成员函数,有如下特征:

a.函数名与类名相同。

b.无返回值。

c.对象构造(对象实例化)时系统自动调用对应的构造函数。

d.构造函数可以重载。

e.构造函数可以在类中定义,也可在类外定义。

f.如果类定义中没有给出构造函数,则C++编译器自动产生一个缺省的构造函数,但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数。

g.无参的构造函数全缺省的构造函数都认为是缺省构造函数,并且缺省的构造函数只能有一个

定义一个Date类


2)拷贝构造函数

创建对象时使用同类对象来进行初始化,这时所用的构造函数称为拷贝构造函数,拷贝构造函数是特殊的构造函数。

拷贝构造函数的 特征:

a.拷贝构造函数是一个构造函数的重载

b. 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用。

c.若未显示定义,系统会默认缺省的拷贝构造函数。缺省的拷贝构造函数会依次拷贝类成员进行初始化。


3)析构函数

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

特点:

a.析构函数在类名前加上字符~

b.析构函数无参数无返回值。

c.一个类有且仅有一个析构函数,若未显示定义,系统会自动生成缺省的析构函数。

d.对象生命周期结束时,C++编译系统自动调用析构函数。

e.析构函数体内主要完成清理工作。


4)赋值操作符重载

赋值运算符的重载是对一个已存在的对象进行拷贝赋值。

编译器的处理



5)运算符重载

operator+合法的运算符构成函数名   例如:operator=

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

注:5个C++不能重载的运算符   .*/::/sizeof/? :/.


阅读全文
0 0
原创粉丝点击