关闭

C++关于类的复习

247人阅读 评论(1) 收藏 举报
分类:

1、C++ 类的声明:

class class_name
{
    private:
        /*
        *私有的数据和成员函数
        *只能被本类中的成员函数引用,类外不能调用
        *友元类例外
        */
    public:
        /*
        *公共的数据和成员函数
        *可以被本类中的成员函数引用,也可以被类的作用域内的其他函数引用
        */
    protected:
        /*
        *受保护的数据和成员函数
        *不能被类外访问,但可以被派生类的成员函数访问
        */
};

2、在类外定义成员函数

void class_name::fanction_name()
{
	//函数体
}

3、定义内置函数

inline void class_name::fanction_name()
{
	/*
	* 内置函数在正真执行时,是把函数代码嵌入到程序的调用点
	* 以减少调用成员函数的时间开销
	* 内置函数的要求:函数规模很小,调用频率较高
	*/
}

4、定义类的对象

class_name name_1,name_2;

5、对象成员的引用

(1) 通过对象名和成员运算符访问对象中的成员
	class_name name_1;
	name_1.fanction_name();

(2)通过指向对象的指针访问对象中的成员
	class_name name_1,*p; //定义对象 name_1 和 class_name 类的指针变量 p
	p = &name_1;          //是 p 指向对象 name_1
	p->fanction_name();

(3)通过对象的引用来访问对象中的成员
	class_name name_1;
	class_name & name_2 = name_1; //定义类的引用变量 name_2 并使之初始化为 name_1
	name_2.fanction_name();       
	/*
	*name_1 和 name_2 共同占用一段内存
	*所以 name_2.fanction_name() 就是 name_1.fanction_name()
	*/

6、构造函数

(1)构造函数的简介:
	构造函数是用来处理对象的初始化;
	构造函数的名字必须与类名同名,不能任意命名;
	构造函数不能被用户调用,而是在建立对象时自动执行;
	构造函数不具有任何类型,不返回任何值;

(2)构造函数在类外的定义
	//先在定义类时的 public 中声明构造函数
	class_name();
	//在在类外定义
	class_name::class_name()
	{
		/*如果用户自己没有定义构造函数,则 C++ 系统会自动生成一个构造函数,
		* 只是这个构造函数的函数体是空的,不执行初始化操作
		*/
	}

(3)带参数的构造函数
	class class_name
	{
		public:
			class_name(int,int,int); //声明带参数的构造函数
		private:
			int height;
			int width;
			int lengh;
	};

	//在类外定义带参数的构造函数
	class_name::class_name(int a,int b,int c)
	{
		height = a;
		width = b;
		lengh = c;
	}

	//定义对象并给三个成员变量赋初值
	class_name name_1(1,2,3);

(4)构造函数的重载
	在一个类中定义多个构造函数,以便对类的对象提供不同的初始化方法,
	这些构造函数具有相同的名字,而参数的个数或参数的类型不同
	编译器根据定义对象时给对象赋值的参数去确定对应的构造函数

	//在类的定义中声明构造函数
	class_name(); //声明一个无参数的构造函数
	//声明一个有参数的构造函数,用参数的初始化表对数据成员初始化
	class_name(int a,int b,int c):height(a),width(b),lengh(c){}

	//定义对象
	class_name::name_1;  //定义对象 name_1 不指定实参,这时调用第一个构造函数
	class_name::name_2(1,2,3);//定义对象 name_2 指定实参,这时调用第二个构造函数

7、析构函数

//析构函数在定义类时的声明
	~class_name();

	//在类外的定义
	class_name::~class_name()
	{
		//析构函数的作用是在撤销对象占用的内存之前完成一些清理工作
	}

8、this指针

在每一个成员函数中都包含一个特殊的指针 this ,它是指向本类对象的指针
    它的值是当前被调用的成员函数所在的对象的起始地址
    this 指针是用来区分不同对象的成员函数引用其对应的数据成员

9、派生与继承

(1)派生类的声明
	//声明基类是 class_name 以公用继承方式的派生类 class_name_1 
	class class_name : public class_name_1 
	{
		private:
			//派生类中新增的成员
		public:
	};

(2)派生类成员的访问属性
	基类成员函数不能访问派生类的成员
	派生类的成员函数根据继承方式不同而不同:
              公用继承
    ———————————————————————————————————
    基类成员      |    派生类中的访问属性 
    ———————————————————————————————————
    私有成员      |    不可访问
    ———————————————————————————————————
    公用成员      |    公用
    ———————————————————————————————————
    保护成员      |    保护
    ———————————————————————————————————
             私有继承
    ———————————————————————————————————
    基类成员      |    派生类中的访问属性
    ———————————————————————————————————
    私有成员      |    不可访问
    ———————————————————————————————————
    公用成员      |    私有
    ———————————————————————————————————
    保护成员      |    私有
    ———————————————————————————————————
              保护继承
    ———————————————————————————————————
    基类成员      |    派生类中的访问属性
    ———————————————————————————————————
    私有成员      |    不可访问
    ———————————————————————————————————
    公用成员      |    保护
    ———————————————————————————————————
    保护成员      |    保护
    ———————————————————————————————————

10、友元

(1)友元的含义:
	在一个类中声明一个外部函数或者另一个类的成员函数
	为友元,则这个函数就可以访问这个类的私有数据

(2)友元的声明
	//在类的定义时声明外部函数 fanction_name 为友元
	friend void fanction_name(class_name &);	
	//在 class_name 类的定义时声明 class_name_1 的成员函数 fanction_name 为友元
	friend void class_name_1::fanction_name(class_name &);




1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

模式识别中机器学习算法研究

一、             总体介绍 模式识别(pattern recognition,以下简称PR)源自工程,是一类问题(problem);机器学习源自计算机科学,...
  • iezengli
  • iezengli
  • 2014-06-21 23:07
  • 1611

Objective-C考试2015年12月最新题库的试题

※ 选择题(共80题,每题1分)               1、OC中布尔(BOOL)类型的变量的值只有:答案:(B)      ...
  • sanzhanggui123
  • sanzhanggui123
  • 2015-12-12 15:47
  • 2088

考察深度学习基础知识的45道题目(附答案)

考察深度学习基础知识的45道题目(附答案)
  • zchang81
  • zchang81
  • 2017-05-04 15:32
  • 2782

C++智能指针模板类复习

//C++智能指针模板类复习 #include #include using namespace std; //智能指针用于确保程序不存在内存和资源泄漏且是异常安全的。 //C++98中提供...
  • linukey
  • linukey
  • 2015-04-27 19:22
  • 315

C++复习(3):类的一系列操作.继承与派生

类的继承与派生是类的重要用法,是C++语言面向对象特点的一大体现,此功能极大的减小了程序员的工作量,派生类除了基类的构造函数和析构函数以外都会继承,而继承方式则控制基类在派生类中的访问属性。 定...
  • ray_paul1
  • ray_paul1
  • 2017-12-09 17:25
  • 199

C++复习(2)派生类成员的标志与访问

首先,在派生类中,成员按照访问属性可以分为以下四类: (1)不可访问成员;这些成员是通过继承得到的,比如继承的基类中原有的私有成员。 (2)私有成员; (3)保护成员; (4)公有成员。 如果这些成员...
  • lhanchao
  • lhanchao
  • 2016-09-17 20:55
  • 417

C++复习 类

类.类类型通常被称为抽象数据类型,抽象数据类型是面向对象编程和泛型编程的基础.  001 类就是定义了一个新的类型和新的作用域.      所有类成员必须在类的内部声明,一旦类定义完成后,就没有任何方...
  • cxh342968816
  • cxh342968816
  • 2011-03-04 09:50
  • 409

C++复习——template,template类,memcmp

本文主要验证:C++模板、模板类、内存比较关键字 MapIndex.h文件: #ifndef TEMPLATE_CLASS_H #define TEMPLATE_CLASS_H temp...
  • YongYu_IT
  • YongYu_IT
  • 2016-06-14 15:25
  • 183

C++类三大特征(复习下)

C++是一种比较流行的面向对象语言,面向对象语言有三大特性:继承,封装和多态。这种语言起源于八十年代初的贝尔实验室。一直风靡至今,也是我唯一会用的程序开发语言,当然,只是会用,并不算精通。比起以前的f...
  • likewenkaixin
  • likewenkaixin
  • 2011-12-05 10:49
  • 520

C++第9周项目 数组和指针 【项目2-我的数组类】(复习新版)

/*  *copyright(c) 2016,烟台大学计算机学院  *All rights reserved  *文件名称:test.cpp  *作者:谭泽纯  *版本:v6.0  * 阅读程...
  • Little_boy_z
  • Little_boy_z
  • 2016-05-16 13:10
  • 205
    个人资料
    • 访问:10105次
    • 积分:237
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:5篇
    • 译文:0篇
    • 评论:2条