赞
踩
尽量使代码或者功能独立(保证代码和功能独立性)
封装,可以达到,对外提供接口,屏蔽数据,对内开放数据
C++的封装: class封装的本质,在于将数据和行为,绑定在一起然后通过对象来完成操作。
特点:1、没有返回值;
2、函数名与类名相同;
3、可以重载;
4、当实例对象时,会自动调用;
5、系统会默认生成构造函数;
规则:1、当用户给类定义任何构造函数时,系统会默认生成一个无参构造函数;
如果定义了其他构造函数,系统不会生成默认的构造函数;
C++11引入关键字: default delete
Student ()= default;(使用系统默认生成的无参构造函数)
Student () = delete ;(系统不要生成默认的无参构造函数)
1、默认无参构造函数;自定义的有参构造函数。
2、类型转换构造函数,构造函数只有一个参数;防止隐式类型转换必须加 explicit
3、拷贝构造函数;
4、移动拷贝构造函数;
重载运算符 :operator 类型()
析构函数:释放属性所占用的空间
特点:函数名是:~ 类名; 无形参; 不能重载; 函数没有返回值;
当对象释放空间时会调用自身的析构函数;
保存的是当前对象的地址; 对应的对象的方法形参都会多一个相应类型的this指针,传参时,将
对象的地址传递给this。
1、处理一些特殊的成员属性;这些属性语义:都必须定义并初始化
eg: 引用:定义必须初始化;
const : 定义必须初始化;
成员对象(无默认构造函数∶无参的构造函数):实例对象时会自动调用构造函数(定义并初始化)>
注:初始化列表的效率要高于在构造函数内部初始化;建议大家优先使用初始化列表!|
作用及调用时机:用已有的对象初始化新的对象;
默认生成规则:当类里未定义拷贝构造函数,系统会默认生成拷贝构造函数;
函数类型: Student (const Student& stu); 实现将stu里的成员赋值给当前对象;
!!!!默认生成一个 = 运算符重载函数; 拷贝赋值运算符重载;
何时调用:
1、一个对象需要通过另一个对象进行初始化的时候;
2、一个对象以值传递的方式传入函数体(作为参数);
3、一个对象以值传递的方式从函数返回(作为返回值);
用一个对象给另一个对象做初始化,会调用拷贝构造函数(只是做简单的指针赋值),会造成“野指针”;
“让新旧两个对象中的指针指向了同一块存储空间”
手动写拷贝构造函数,程序员自己给指针分配空间;
在C语言中:
修饰局部变量:延长生命周期;
修饰函数或者文件:限制作用域,解决命名空间;
在C++中:
类成员必须在类外初始化:static所修饰的变量
类成员(静态成员) : 属于类,不属于某个具体的对象;
访问形式:对象名.类成员名 / 类名::类成员名
静态成员函数(类成员函数): 属于类
要求:不能访问非静态成员变量;(静态成员函数属于类。所以没有默认的this指针生成)
访问方法:不需要去实例化对象
C/C++ static关键字的作用?
修饰局部变量、局部对象。延长该变量或者对象的生命周期;(函数调用完释放,一次析构)
修饰全部变量或者全局对象,只能在本文件访问不能在其他文件访问;
修饰类成员变量时:该变量为静态变量,属于类,被该类所以实例化对象共享访问,不占用对象的空间。
修饰普通函数:该函数只能在本文件访问,不能在其他文件访问;
修饰成员函数:该函数为静态成员函数,属于类,不属于对象,被该类所以实例化对象共享访问;没有this指针,不能访问类的非静态成员。
什么样情况下需要用static修饰一个类的成员或者成员函数?
C/C++混合编程时,C的接口需要一个函数地址作为参数时,只能将类的非静态成员函数变为静态成员函数;
调用C接口处理一些网络编程或者数据库的代码,其中pause()函数作用是挂起,然后按下任意键继续输出调用函数的内容;
C/C++ const关键字的作用:
const 修饰普通变量 C是只读变量 C++是常量
C++:const修饰成员函数,该成员函数只能访问成员变量,不能修改,需要修改成员变量时,需要加mutable修饰成员; //eg1
C++:const修饰一个对象,称之为常对象,只能调用const修饰的成员函数;//eg2
eg1:
eg2:
eg1:
C语言:
C++:
提高程序运行效率,减缓调用函数返回的时间开销;(适用于频繁调用的函数或类)
友元是一种允许非类成员函数访问类的非公有成员的一种机制。
可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。
注意事项:
不能重载的运算符:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。