c++2

// 面向过程:一个一个的 函数  函数与函数之间的关系


// 面向对象:搭建场景, 往场景内部放物体(对象)  场景之中对象与对象的交互
	// 特点: 抽象、封装、继承、多态
		// 封装:1、将客观事物抽象成特定的类,2、对外提供一定的访问控制 --->  信息隐藏、数
                 据安全
			// 1、将一个客观事物抽象成类
				// 1、有哪些特性(属性)    ----->   变量
				// 2、能做哪些事情(方法)  ----->   函数

			// 2、访问控制:
				// 1、public     公有权限 :  允许对象在类的 内部 和 外部都使用
				// 2、private    私有权限 :  允许对象在类的 内部使用, 外部不允许使用   
							(如果没有特别指明一个成员的权限,则默认是私有的)
				// 3、protected  保护权限 :  允许对象在类的 内部使用, 外部不允许使用

		// 继承:代码复用
		// 多态:功能扩展


//构造函数:创建对象时自动调用
	//1.函数名=类名		Test(int a, int b)
	//2.没有返回值
	//3.可以承载


//析构函数:销毁对象时自动调用
	//1、函数名=~类名  	~Test(int a, int b)
	//2、没有返回值
	//3、没有参数

//拷贝构造函数: 用一个对象对另一个对象进行初始化
	//1, 类名(const 类名& XX)	 Test(const Test &obj)
	//2, 如果创建一个新的对象 则必定要调用 某个构造函数
	//3, 如果某个构造函数被调用 必定意味着产生了一个新的对象

	//浅拷贝:系统自动添加------值的复制,没有堆复制
	//深拷贝:自己写------------堆复制

	//若将拷贝构造函数设为私有函数,只需声明
	//若类中有指针成员,只需手动写拷贝构造
	//注意:
		// 1、如果 类中一个构造函数都没有, 系统会默认添加一个无参构造函数 ==> 什么都不做
		// 2、如果 类中没有析构函数, 系统会默认添加一个析构函数 ==> 什么都不做
		// 3、如果 类中没有拷贝构造函数, 系统会默认添加一个拷贝构造函数 ==>简单数据类型复    
             制

// 对象的动态创建
// C  中:  malloc 和 free  ===>   库函数    不是语法的一部分
// C++中:  new  和 delete  ===>   运算符    是语法的一部分

	// 创建单个变量  int a
		// new : 类型 *变量名 = new 类型(初始值)----int *pb = new int;
		//释放:------ delete pb;
	// 创建一维数组  int a[10]
 		// new : 类型 *变量名 = new 类型[数组大小]  创建数组的时候不能进行初始化--- int 
               *pc = new int[10];
		// 释放:delete 释放数组的时候要加 [], 不然会造成内存泄漏---- delete[] pc;
	// 创建多维数组  int a[4][5]
		// new    创建对象的时候会自动调用构造函数----- int (*pc)[5] = new int[4][5];
		// delete 释放对象的时候会自动调用析构函数----- delete[] pc;
//普通成员变量 :-------存在栈
//静态成员变量 :static ------存在全局数据区
	//1、不是对象,是类的属性,是所有对象共享的属性
	//2、静态成员变量必须在类的外部初始化
	//3、静态成员 可以通过类名直接使用

//普通成员函数 :1、有this指针,指向当前调用对象------存在代码段
//静态成员函数 :1、没有this 指针2、只能使用静态成员,不能使用类的普通成员-----存在代码段

//友元函数:如果一个函数是某个类的友元函数,则该函数中可以通过对象使用类的私有成员
//友元声明:在类中friend+ 函数声明
	//1、友元函数不是类的成员函数,是外部函数----friend void show(Test &t);
	//2、友元声明不受访问控制限制,可以在类中任意位置声明
	//3、友元破坏了类的封装,尽可能不要用
//友元类:如果有一个类A,是另一个类b的友元类,则A 中所有函数都是B的友元函数

//运算符重载(自定义),编译器不知道,需要后来定义出来的规则 。运算时,编译器调函数
	//函数原型:
		//1、函数名:operator+运算符    -----> operator+()
		//2.参数:操作数从左往右填     -----> operator+(Complex c1,Complex c2)
		//3.返回值:根据需要确定  ----> Complex operator+(Complex c1,Complex c2);

 Student& operator =(const Student &s)
     {
     //判断是否对自己进行赋值
        if (this != &s)
         {
         // 1、调用拷贝够早函数创建一个临时对象
            Student tmp = s;
             // 2、将当前指针空间和临时对象的指针空间进行交换
            char *p = tmp.name;
             tmp.name = name;
             name = p;
             // 3、复制剩余内容
            id = s.id;
         }
        return *this;
     }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值