C/C++基础知识总结3

1、变量的定义与声明

声明是主要表明变量的类型和名称,但是不会申请内存;定义是申请内存。只能定义一次,但是可以声明很多次。

int  a ;   extern int a;     extern  int a =1;//为定义

2、C++中变量的存储类型

auto:局部变量,属于动态存储类型

static:在程序运行中始终占有存储空间,只能在它的作用域范围内使用。函数中的局部静态变量,下次调用时,能取得上次预算后的值。

extern:外部变量,全局变量。一处定义,多处声明。

register:寄存器变量,属于动态存储类型,说明变量存储在寄存器中,而不是内存中,一般由编译器自身优化选择

3、C++中的内存分配

栈:局部变量,函数参数,返回地址。需要时候申请,系统自动回收

堆:new  malloc 需要人为的释放,或者程序结束后由系统回收

全局/静态存储区:全局变量,静态变量,字符串常量等

代码区:函数和代码

4、C++的输入输出

对标准设备的输入输出:标准I/O

对外存磁盘上的文件输入输出:文件I/O

对内存中指定的字符串存储空间的输入输出:串I/O


5、操作符重载复习

如果要为类重载操作符,并且将非类的项作为其第一个操作数,则可以用友元函数来反转操作数顺序。

常用的友元操作符重载:<<

调用cout<<A应该使用的是cout对象本身,而不是它的拷贝,因此,应该按照引用来传递cout,并且返回cout的引用,这样就可以连续输出了

friend istream& operator>>(istream& , Love&);


6、数组指针和指针数组

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[3]; //是数字指针,指向一个数组的指针
p=a;

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p[3]; //数组指针,数组的元素由指针组成
for(int ix=0;ix<3;ix++)
 p[ix]=a[ix];


7、函数指针和指针函数

int fun(int x);
int (*f)(int x);  //函数指针,指向函数的指针,可以用此来调用函数
f=fun;


int *fun(int x);   //指针函数,返回指针的函数

8、 C++ public protected and private 区别 
访问权限:
public 公共接口 :向外界开放,可通过对象或类名访问
protected 受保护的访问:只向子类开放访问权限 ,不可通过对象访问
private私有 :只有类成员可以访问,外界不可以通过任何形式访问
继承关系:
public继承:父类成员的访问权限在子类中不变,仍为自己原来的权限。
protected继承:父类的public成员访问权限在子类中变为protected;父类的protected成员和private成员在子类权限维持原来的权限不变
private继承:父类的所有成员访问权限在 子类中变为private
     其中,public继承是is-a的关系,可以用父类的指针引用指向子类的对象;protected和private继承没有is-a的关系,只表示“组合”或者“拥有”的关系,不可以用父类的指针或引用指向子类对象。
    C++对象模型中,子类对象的内存空间中包含父类的部分,当用父类指针指向一个子类的对象实时,这个指针可以访问的是相应的父类那部分的内存;在protected和private继承的情况下,父类的内存部分是私有的,不对外开放的,所以,protected和private继承时,不可以用父类的指针或引用指向子类对象。
    通过对象访问成员时,只能访问到共有(Public)成员。
    需要禁止类以构造形式实例化类的时候,可以将类的构造函数声明为private 和protected 的形式。构造函数声明protected 的形式的类不能被直接实例化,但可以通过被继承,子类可以在实例化的时候调用父类的protected构造函数。

  构造函数声明为private的类的实例化不能依赖构造函数,可以提供public 的Instance()的方法,在Instance()定义中调用构造函数,返回类的实例。单例模式就是利用这个原理。

9、友元

友元函数:友元函数的特点是能够访问类中的私有成员的非成员函数。
友元类:友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。


 

10、类中static

类中static数据成员被类所有的对象共享,包括类的派生类。调用时与对象调用普通成员一样

类的静态成员可以成为成员函数的可选参数,普通成员不可以。

类的静态成员的类型可以是所属类的类型,普通成员不可以。普通成员只能声明为所属类类型的指针或引用。

类的静态方法只能访问类的静态成员。


11、多态

动态多态:即通过继承和虚函数方式,基类指针指向派生类,运行时采用迟绑定技术,根据实际对象来选择要调用的函数。

静态多态:泛型式编程。

函数多态:即函数重载

宏多态:宏展开


12、重载、覆盖、隐藏

重载:发生在一个类中的,函数名相同,参数不同

覆盖:父类和子类之间的,基类必须为虚函数,函数名和参数都相同

隐藏:父类和子类之间的,(1)函数名相同,参数不同,无论有无virtual,子类都会覆盖父类。(2)函数名相同,参数相同,父类没有virtual,父类会被子类覆盖



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值