C++语言的特点

C++语言的特点

C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。

随着程序规模的扩大,早期的程序语言(如 FORTRAN 和 BASIC)都会遇到组织方面的问题。例如,程序经常使用分支语句,根据某种测试的结果,执行一组或另一组指令。很多旧式程序的执行路径很混乱(被称为"意大利面条式编程"),几乎不可能通过阅读程序来理解它。
为了解决这种问题,计算机科学家开发了一种更有序的编程方法——结构化编程。C 语言具有使用这种方法的特性。例如,结构化编程将分支(决定接下来应执行哪个指令)限制为一小组行为良好的结构。另一个新原则是自顶向下(top-down)的设计。
虽然结构化编程的理念提高了程序的清晰度、可靠性,并使之便于维护,但它在编写大型程序时,仍面临着挑战。

  • 面向对象的编程(OOP)试图让语言来满足
    问题的要求。其理念是设计与问题的本质特性相对应的数据格式。从低级组织(如类)到高级组织(如程序)的处理过程叫做自
    下向上(bottom-up)的编程。OOP还有助于创建可重用的代码,这将减少大量的工作。
  • 绝大多数C语言程序可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用于C++程序中。

C++有三大特性(1)封装。(2)继承。(3)多态;

  • 将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互。开放一些共有的成员函数对成员合理的访问。所以封装本质是一种管理。
  • 继承能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
    • 可以在已有类的基础上添加功能。
    • 可以给类添加数据。
    • 可以修改类方法的行为。
  • 多态用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。实现多态,有二种方式,重写,重载。

C++语言编写出的程序结构清晰、易于扩充,程序可读性好。

C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;

C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try—catch等等;

1. const关键字

C++有一种更好的处理符号常量的方法,这种方法就是使用const关键字来修改变量声明和初始化
创建常量的通用格式如下∶

Const type name = value;

例如,假设需要一个表示一年中月份数的符号常量

const int Months = 12;// Months is symbolic constant for 12

这样,便可以在程序中使用Months,而不是12了
const 比#defien 好。首先,它能够明确指定类型。其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中。第三。可以将 const 用干更复杂的类型,如数组和结构。

2. 引用

用是已定义的变量的别名(另一个名称)。引用变量的主要用途是用作函数的形参。
引用更接近 const 指针,必须在创建时进行初始化,一旦与某个变量关联起来,就将一直效忠干它。
也就是说∶

int & rodents = rats;

实际上是下述代码的伪装表示∶

int * const pr = &rats;

其中,引用rodents扮演的角色与表达式*pr 相同

将引用参数声明为常量数据的引用的理由有三个∶

  • 使用 const可以避免无意中修改数据的编程错误;
  • 使用 const 使函数能够处理 const 和非 const实参,否则将只能接受非 const 数据;
  • 使用 const引用使函数能够正确生成并使用临时变量。
3. 类型转换运算符

C语言中的类型转换运算符太过松散。例如

struct Data
{
	double data[200];
};
struct Junk
{
	int junk [100];
);
Data d ={2.5e33,3.5e-19,20.2e32};
char * pch =(char *)(&d); // type cast #1 convert to string
char ch = char (&d); //type cast #2 - convert address to a char
Junk * pj =(Junk *)(&d);// type cast #3 - convert to Junk pointer

它们中没有一个是有意义的。C语言中都是允许的。
对于这种松散情况,更严格地限制允许的类型转换,添加 4个类型转换运算符,使转换过程更规范∶

  • dynamic_cast;
  • Const_cast;
  • static_cast;
  • reinterpret_cast。

C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL(Standard Template Library)。

【C++】–STL容器汇总

同时,C++是不断在发展的语言。C++后续版本更是发展了不少新特性,如C++11中引入了nullptr、auto变量、Lambda匿名函数、右值引用、智能指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值