C++ 面向对象
2016-07-05 11:52
344 查看
一、基本特征
面向对象的四个基本特征:(1)抽象;(2)封装和数据隐藏;(3)继承;(4)多态
二、访问控制
(1)、private:类的私有成员只能被类的成员函数、友元函数、友元类访问,类外无法访问他们
(2)、protected:类的受保护成员能被类的成员函数、友元函数、友元类和派生类成员函数访问
(3)、public:类的公有成员可以被类的成员函数、友元函数、友元类所有能访问到类的对象的外部程序代码直接访问,这部分往往是一些操作(即成员函数)
(4)、类的公有成员是类的对外接口
三、构造函数
(1)、功能:为对象分配空间;对数据成员赋初值;请求其他资源。
(2)、如何声明构造函数:
–函数名和类名完全相同
–不能定义构造函数的类型(返回类型),也不能使用void
–构造函数应声明为公有函数,但它不能像其他成员函数那样被显式地调用
–构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载)
(3)、创建类的对象时,自动调用类的构造函数
(4)、创建一个对象时只调用一个构造函数(根据参数列表)且只在创建时调用一次
(5)、在一个类需要接受不同的初始化值时,就需要编写多个构造函数,他们之间构成重载关系
四、构造函数种类
(1)、普通构造函数:有两个或两个以上参数的构造函数
(2)、默认构造函数
(3)、复制(拷贝)构造函数
(4)、类型转换构造函数
五、默认构造函数
(1)、没有参数或者所有的参数都有默认值的构造函数成为默认构造函数。
(2)、如果类中没有声明构造函数,编译器将自动产生一个公共的默认无参数构造函数;如果存在一个构造函数声明,那么编译器不会产生一个默认的构造函数
(3)、没有指明初始化对象时,便按默认构造函数来初始化该对象。
(4)、一个类中只能有一个默认构造函数(如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,会产生调用时二义性)
(5)、可以为类的成员函数指定参数的默认值,包括构造函数在内。
(6)、要把默认参数值放在函数声明中,而不应放在函数定义中
(7)、如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,将产生调用时二义性。
六、拷贝构造函数
(1)、功能:使用一个已经存在的对象来初始化一个新的本类的对象
(2)、声明:只有一个参数并且参数为该类对象的引用
class
类名{
public:
类名(类名
&对象名);
};
(3)、如果类中没有说明复制构造函数,则系统自动生成一个缺省复制构造函数,作为该类的公有成员
(4)、浅复制和深复制
–浅复制:将对象数据成员的值进行简单的复制(最好利用系统自动生成的复制构造函数,已完成浅复制
–深复制:不仅将对象数据成员的值进行复制,而且对指针型数据成员生成新空间,然后复制对应的值
七、析构函数
(1)、动态创建的作用:撤销对象前做清理工作,一般是释放对象在生存期间动态申请的空间
(2)、当对象超出其定义范围时(即释放该对象时),编译器自动调用析构函数。
–对象被定义在函数体内,则当这个函数结束时,该对象的析构函数被自动调用。
–对象是使用new运算符,在使用delete运算符释放它时,delete将会自动调用析构函数。
面向对象的四个基本特征:(1)抽象;(2)封装和数据隐藏;(3)继承;(4)多态
二、访问控制
(1)、private:类的私有成员只能被类的成员函数、友元函数、友元类访问,类外无法访问他们
(2)、protected:类的受保护成员能被类的成员函数、友元函数、友元类和派生类成员函数访问
(3)、public:类的公有成员可以被类的成员函数、友元函数、友元类所有能访问到类的对象的外部程序代码直接访问,这部分往往是一些操作(即成员函数)
(4)、类的公有成员是类的对外接口
三、构造函数
(1)、功能:为对象分配空间;对数据成员赋初值;请求其他资源。
(2)、如何声明构造函数:
–函数名和类名完全相同
–不能定义构造函数的类型(返回类型),也不能使用void
–构造函数应声明为公有函数,但它不能像其他成员函数那样被显式地调用
–构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载)
(3)、创建类的对象时,自动调用类的构造函数
(4)、创建一个对象时只调用一个构造函数(根据参数列表)且只在创建时调用一次
(5)、在一个类需要接受不同的初始化值时,就需要编写多个构造函数,他们之间构成重载关系
四、构造函数种类
(1)、普通构造函数:有两个或两个以上参数的构造函数
(2)、默认构造函数
(3)、复制(拷贝)构造函数
(4)、类型转换构造函数
五、默认构造函数
(1)、没有参数或者所有的参数都有默认值的构造函数成为默认构造函数。
(2)、如果类中没有声明构造函数,编译器将自动产生一个公共的默认无参数构造函数;如果存在一个构造函数声明,那么编译器不会产生一个默认的构造函数
(3)、没有指明初始化对象时,便按默认构造函数来初始化该对象。
(4)、一个类中只能有一个默认构造函数(如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,会产生调用时二义性)
(5)、可以为类的成员函数指定参数的默认值,包括构造函数在内。
(6)、要把默认参数值放在函数声明中,而不应放在函数定义中
(7)、如果一个构造函数的所有参数均有默认值,这时再定义无参数的默认构造函数无意义,将产生调用时二义性。
六、拷贝构造函数
(1)、功能:使用一个已经存在的对象来初始化一个新的本类的对象
(2)、声明:只有一个参数并且参数为该类对象的引用
class
类名{
public:
类名(类名
&对象名);
};
(3)、如果类中没有说明复制构造函数,则系统自动生成一个缺省复制构造函数,作为该类的公有成员
(4)、浅复制和深复制
–浅复制:将对象数据成员的值进行简单的复制(最好利用系统自动生成的复制构造函数,已完成浅复制
–深复制:不仅将对象数据成员的值进行复制,而且对指针型数据成员生成新空间,然后复制对应的值
七、析构函数
(1)、动态创建的作用:撤销对象前做清理工作,一般是释放对象在生存期间动态申请的空间
(2)、当对象超出其定义范围时(即释放该对象时),编译器自动调用析构函数。
–对象被定义在函数体内,则当这个函数结束时,该对象的析构函数被自动调用。
–对象是使用new运算符,在使用delete运算符释放它时,delete将会自动调用析构函数。
相关文章推荐
- 8 个免费实用的 C++ GUI 库推荐
- C++中引用(&)的用法和应用实例
- c++类型转换
- TYVJ1403(NOIP2010提高组T3)关押罪犯
- C语言的常量
- typedef几种常见用法
- C语言头文件#include<sys/types.h>的作用
- C语言之实现控制台光标随意移动
- Borland C++建立工程菜鸟教程
- C++ 竞赛常用头文件
- 排序算法系列----堆排序(C++)
- c++的函数模板和类模板
- 一个小巧的C++Log输出到文件类
- C语言结构体对齐存储问题以及给结构体中的数组的赋值问题
- C语言之控制台读取上下左右方向键指令
- 结构体struct和typedef后面接指针的含义
- c/c++错误及解决方法
- 理解C语言递归函数的逐级返回(return)
- C++ builder的文件操作
- C语言函数sscanf()的用法