博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C到C++的升级
阅读量:5795 次
发布时间:2019-06-18

本文共 1634 字,大约阅读时间需要 5 分钟。

C++ 的加强主要表现在:类型的加强、面向对象支持

1、变量定义

C++更强调语言的实用性,所有的变量都可以再需要使用的时候再定义,C语言中的变量都必须在作用域开始的位置定义

int c = 0;for (int i = 1; i < 3; i++){    for (int j = 1; j < 3; j++)    {        c += i * j;    }}

register 关键字请求编译器将局部变量存储与寄存器中

  • 在C++中依然支持register关键字
  • C++ 编译器有自己的优化方式

    • C语言中无法获取register变量的地址
    • C++中可以取得register变量的地址

      C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效

早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充

2、同名变量

在C语言中,重复定义多个同名的全局变量是合法的,多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上。

在C++中,不允许定义多个同名的全局变量。

3、struct关键字的加强

C语言中的struct定义了一组变量的集合

C语言中的struct定义的标识符并不是一种新的类型

C++中的struct用于定义一个全新的类型

// C语言typedef struct _tag_student Student;    // 将struct _tag_student类型起了一个别名Studentstruct _tag_student{    const char * name;    int age;}// C++// struct定义一个全新的类型struct Student{    const char * name;    int age;};

4、小思考

int f()int f(void)的区别:有没有区别,要看用什么编译器

  • 如果用C语言编译器,int f()的函数类型是返回值为int,接收参数是任意个数参数;int f(void)表示返回值为int,不接收任何参数
  • 在C++中,这两种写法没有区别,都表示返回值为int,不接收任何参数

5、默认类型

C++中所有的标识符都必须显示地声明类型

C语言中地默认类型在C++中是不合法的

f(i){    printf("i = %d\n", i);}g(){    return 5;}

在C语言中:

  • int f()表示返回值为 int, 接收任意参数的函数
  • f(void)表示返回值为int的无参函数

在C++中:

  • int f()int f(void)具有相同的意义,表示返回值为int的无参函数

C++中无默认类型,如果没有参数,就是不接受任何参数,int f(void)只是为了兼容C语言

C++ 不接受无返回值类型的函数,不允许默认类型

#include 
// c++中,定义了一个新的类型Studentstruct Student{ const char* name; int age;};// C++中有问题,不合法f(i){ printf("i = %d\n", i);}// C++不合法g(){ return 5;}int main(int argc, char *argv[]){ Student s1 = {"Delphi", 30}; Student s2 = {"Tang", 30}; f(10); printf("g() = %d\n", g(1,2,3,4,5)); return 0;}

6、总结

C++更强调实用性,可以在任意的地方声明变量

C++中的register只是一个兼容C的作用

C++编译器能够更好地进行优化

C++中地任意标识符都必须显示地指明类型

转载地址:http://dabfx.baihongyu.com/

你可能感兴趣的文章
jQuery与vue分别实现超级简单的绿色拖动验证码功能
查看>>
排序矩阵中的从小到大第k个数
查看>>
消息的即时推送——net实现、websocket实现以及socket.io实现
查看>>
【设计模式】空对象设计模式学习
查看>>
网络库与Rxjava2结合常见使用场景介绍
查看>>
Crontab 定时任务
查看>>
VS Code上手与超实用插件安利
查看>>
Ios/Android h5 唤起本地APP
查看>>
JavaScript如何工作:引擎,运行时和调用堆栈的概述
查看>>
微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具...
查看>>
注释(译)
查看>>
phpmyadmin 忘记密码怎么办?Linux 通过命令重设 phpmyadmin root 密码
查看>>
翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...
查看>>
算法初探——递归算法
查看>>
拆解 MySQL 的高阶使用与概念
查看>>
基于canvas的图片编辑器,头像编辑器
查看>>
scrapy的应用需要掌握的知识点
查看>>
来自Chart.js的几个JS helper function
查看>>
PHP 单元测试与数据库测试
查看>>
Vue 源码阅读(二)props 属性实现细节
查看>>