C++中知识点

C++中知识点

1. static

在C语言中,有如下作用:

1)  在函数体内,static修饰的变量值在函数调用过程中维持不变。

2)  在模块内(函数体除外),static修饰的变量(本地全局变量)作用域只在本模块内。

3)  在模块内,static修饰的函数,作用域只在本模块内部。

在C++语言中,有如下作用:

1)  成员变量:静态成员变量(数据成员)——所有对象一份数据

2)  静态变量初始化须在类外。int A::i = 0;

3)  成员函数:静态成员函数。A::fun();

4)  静态成员函数不能访问非静态成员变量。(先有类才有对象)

5)  静态内容是属于类的,非静态内容是属于对象的。

6)  C++中static修饰的成员变量是以全局变量的形式存在,不占类的内存。

注:一个空类占一个字节,以保证创建的对象占用不同的内存(对象唯一的)。

 

2. Const

Const 意味着“只读”。

1) const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令

2) 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。

3)  编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

4) 可以节省空间,避免不必要的内存分配。

 

3. 重载(overload)和重写(override,“覆盖”)的区别?

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义父类虚函数的方法。

 

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。

 

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

 

4. C++是不是类型安全的?

不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值