C++专项练习知识点(一)

注意的知识点:

1、C++中,*(a+3)和a[3]一个东西

2、case的执行:先执行匹配的case,没有break时,按顺序执行了后面的case,直到碰到break或者末尾

3、C语言中,局部变量存在于栈中常量存储于程序的只读存储区

4、除public外,其余在class外均不可访问,子类不能访问父类的私有变量,若想访问,可以调用父类中的公共成员函数

5、

  • 构造函数不可以是虚函数;
  • 析构函数不可以是纯虚函数;
  • 构造函数中不应该调用纯虚函数

6、指针和引用的区别

  • 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;
  • 而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作

7、多态性:同名函数对应多种不同的实现
(编译时)静态:函数重载,运算符重载,模板实现
(运行时)动态:虚函数实现

8、函数重载只跟参数类型参数个数有关
运算符?不能重载,因为这个运算符对于类对象来说没有实际意义
运算符‘.’也不能重载,因为在类中对任何成员都有意义

9、若已定义的函数有返回值,则返回值存在寄存器中,没有地址,不能作为形参,但可以作为实参。

10、关于派生类,

  • 从基类接受成员;
  • 调整从基类接受的成员;
  • 在声明派生类时增加成员,它体现了派生类对基类功能的扩充;
  • 在声明派生类时,还要自己定义派生类的构造函数

11、“A”是字符串常量,'A’是字符常量

12、关系运算符的优先级大于逻辑运算符,例如:b=a>3&&0(a=5),得b=0

13、通常情况下,变量的值是存取与内存之中,若使用CPU的寄存器,将局部变量值直接放于寄存器中,其存取速度远远高于对内存的存取速度,所以使用CPU寄存器可以提高执行速率,比如使用register类型的变量

14、动态创建对象

  • 对于class类型,必须用new/delete来创建,销毁。
    malloc/free是无法胜任的。
    new:动态创建一个对象: 申请一块内存 内部调用了构造函数
    delete:释放这个对象: 调用了析构函数 释放内存

15、友元函数运算符

16、内联函数,一般用于加快程序执行速度,可能减小可执行文件大小,可能增加可执行文件大小

17、高级语言程序结构丰富,可读性好,可维护性强,可靠性高……,但是执行效率低

18、重写伴随着继承,但是私有成员函数在继承后不可见,所以不能被重写

19、

#include <stdio.h>  
void  fun ( int  n ,int *s ) {        
	 int  f;      
	 if(n==1) 
	 	*s = n+1      
	 else {
	 	fun( n-1, &f) ;         
	  	*s = f  ;     
	 } 
}  
main() {        
	 int  x =0;     
	 fun( 4,&x );      
	 printf("%d\n",x);   
}

输出为24次调用fun
fun(4&x)-> fun(3&f) ->fun(2, &f) ->fun(1, &f)

fun(1, &f)返回后,使得fun(2&f)中的 f 变为2
依次向上递推,
fun(4&x)中的 f 也为2
然后,*s = f = 2
x的值为2

20、

C语言的关系表达式:0<x<10完全等价于: (0<x) && (x<10)这句话是错的
(x>0)&&(x<10) 的值是 10 ,条件是 x>0 并且 x <10 。但是 0<x<10 这种写法的结果任何时候都是 1&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象
短路效应是指,二元逻辑运算符&& ||,左边真值一旦确定,不会执行右边表达式,如if(true || printf("不执行))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值