概念卡

1、全局变量警告增强

语言 代码 编译结果
C int a;int a=10; 编译通过
C++ int a;int a=10; “int a”: 重定义

2、函数检测

语言 代码 编译结果
C void getAreaS(wide, height){ } 编译通过
C++ void getAreaS(wide, height){ } wide与height参数未定义

3、struct中嵌入方法

语言 代码 编译结果
C struct Person{int m_Age;void AgePlus() { m_Age++;};}; 不允许函数类型
C++ struct Person{int m_Age;void AgePlus() { m_Age++ ;};}; 编译通过

4、bool类型添加

语言 代码 编译结果
C bool flag; bool未定义标识符
C++ bool flag; 编译通过,1—true,0—false

5、const修饰局部变量增强(不可修改)

语言 代码 编译结果
C const int a = 20;int b[a]; a是伪常量,编译器是会分配内存的,b[a]报表达式必须含有常量值错误
C++ const int a = 20;int b[a]; 编译通过
C int *p = (int *)&a; *p = 200 编译通过,且a的值由20改为200
C++ int *p = (int *)&a; *p = 200 编译通过,a的值还是20,*p的值为200

注: const修饰的全局变量在C/C++都是受保护的,修改不了,全局变量保存在静态区,局部变量保存在栈。这里主要讨论const修饰局部变量的问题。众所周知,C给了程序员很大的自由,大多数情况下代码是听程序员控制的,即使被const修饰了成为只读变量,但还是可以通过指针的方式修改。C++在这一方面的增强一定程度上削减程序员的自由,让代码更多的听编译器的,逻辑听程序员的。C++在处理const修饰的局部变量时,并非像C那样直接分配内存,而是将这个变量保存在一张“符号表”

key value
a 20

当执行"int *p = (int *)&a; *p = 200"时,C++编译器会临时开辟一块内存空间,如tmp绑定内存空间。所以输出结果的时候a的值还是20,*p的值为200。

int tmp = a; // tmp有内存
int *p = (int *)tmp // *p指向的是临时那块空间

6、const修饰局部变量增强(可修改)

记住一条原理: 只要分配了内存空间的局部变量就可以修改值。

void test02()
{int b = 30;const int c = b;int *c_p = (int *)&c;*c_p = 300;cout << "c = " << c << endl;  // 输出结果:c = 300
}

“int b = 30;” 是分配内存的,"const int c = b;"将分配内存的值赋给c的时候,c也要分配内存,但分配了内存就意味着可以用指针去修改它的值。

原理卡

从语法上讲: 不严格的说C是C++的子集,也就是C++包含C语言的大部分语法.当然由于C++和C都有不同的版本(ANSI/ISO),各编译器对标准支持的程度也不一样.C++不一定能百分百兼容C.

从编程思想上讲: C是典型的命令式编程,也就是作者精确的设计出程序的每一个过程.程序一步步的执行.C++严格的讲并不是完全的面向对象编程,而是支持多重编程范式的语言.用C++来编写程序可以是命令式的,也可以是面向对象的,甚至可以是函数式编程.(C也可以用特殊技术模似面向对象和其它的编程风格,但还是以命令式编程为主)

从应用上讲: C一般应用于要求高效,资源有限,与硬件相关度较大贴近底层的环境.如操作系统,驱动程序和嵌入式系统的编写.C++执行效率高,又具有良好的软件工程性.适用于大规模的应用软件,游戏引擎的开发.我们所使用的大部分应用软件和几乎所有的大型游戏都是用C++编写的.

实战卡

1、Visual Studio添加自定义代码片段

参考原文

2、C与C++关于增强代码

C代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>// 1、全局变量检测
int a;
int a = 10;// 2、函数检测
void getAreaS(wide, height)
{}// 3、struct嵌入方法
struct Person
{int m_Age;void AgePlus() { m_Age++; };
};// 4、bool类型增强
bool flag;// 5、const增强
const int s_a = 50; // 全局变量受保护
void test01()
{const int a = 20;int b[a];int *p = (int *)&a;*p = 200;
}int main()
{system("pause");return EXIT_SUCCESS;
}

C++代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;// 1、全局变量检测
//int a;
int a = 10;// 2、函数检测
void getAreaS(int wide, int height)
{}// 3、struct嵌入方法
struct Person
{int m_Age;void AgePlus() { m_Age++; };
};// 4、bool类型增强
bool flag;// 5、const增强
const int s_a = 50; // 全局变量受保护
void test01()
{const int a = 20;int b[a];int *p = (int *)&a;*p = 200;
}void test02()
{int b = 30;const int c = b;int *c_p = (int *)&c;*c_p = 300;cout << "c = " << c << endl;  // 输出结果:c = 300
}int main()
{test02();system("pause");return EXIT_SUCCESS;
}

02C++对C的增强相关推荐

  1. 2022-2028年中国纤维增强聚合物行业市场调查研究及发展前景规划报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了纤维增强聚合物行业相关概述.中国纤维增强聚合物行业运行环境.分析了中 ...

  2. Windows10自带搜索增强设置

    操作系统:Windows10 前言:Windows自带的搜索速度非常慢,因此有人借助Everything等索引软件进行搜索,能够显著提升搜索速度.但是Windows自带的搜索在进行一些设置以后也能达到 ...

  3. 新兴解决方案增强了电动汽车电源(功耗)管理

    新兴解决方案增强了电动汽车电源(功耗)管理 Emerging solutions enhance electric-vehicle power management 电动汽车正变得越来越受欢迎,因为在 ...

  4. 数字汽车钥匙的安全性增强技术

    数字汽车钥匙的安全性增强技术 Service bolsters security of digital car keys 苏格兰爱丁堡--现在智能手机上的应用程序已经成为所有数字商务之母,各公司正狂热 ...

  5. 小目标检测的增强算法

    小目标检测的增强算法 Augmentation for small object detection 摘要 近年来,目标检测取得了令人瞩目的进展.尽管有了这些改进,但在检测小目标和大目标之间的性能仍有 ...

  6. 车辆摄像头夜晚场景图像ISP增强算法

    车辆摄像头夜晚场景图像ISP增强算法 输入输出接口 Input: (1)图像视频分辨率(整型int) (2)图像视频格式(RGB,YUV,MP4等) (3)摄像头标定参数(中心位置(x,y)和5个畸变 ...

  7. java 增强for循环(foreach)

    学而时习之,温故而知新. java的增强fou循环(foreach) 是java5的新特征之一 foreach的循环对象一般是一个集合,List.ArrayList.LinkedList.Vector ...

  8. java增强for循环

    增强for循环的格式:for(集合内储存类型 变量名:集合的变量名) 常用语遍历集合,数组和实现terable接口类都可以使用. 增强for循环的好处:1 写起来简单,2 遍历集合.容器简单 写一个小 ...

  9. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

  10. 【第八篇】SAP ABAP7.5x新语法之F4增强【续】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之F4增强[续] 前 ...

最新文章

  1. 服务器计费系统安卓,GitHub - NWAFU/dms_client: 服务器计费系统(客户机端):用于统计租户的服务器使用情况...
  2. Android 面试系列 Dn.1---- Service?
  3. 【Spring学习】Spring JdbcTemplate之五类方法总结
  4. readn writen实现linux下socket缓冲区读写
  5. 焦虑症患者,整天心神不宁,忧心忡忡怎么办?
  6. 超赞!墙裂推荐一个 MySQL 自动化运维工具!
  7. 将两个PCB文件合并成一个文件
  8. 计算机刷bios版本,主板刷bios的6种方法,电脑刷bios方法-
  9. 宝塔linux面板安全吗,宝塔面板 安全吗
  10. sql 连接mysql数据库服务器失败_数据库连接失败的原因及解决方法
  11. 阿里云的云端实践有哪些?
  12. URLreWriterFilter的使用
  13. PAT 1025 PAT Ranking题解
  14. 对啊英语音标---二、ghywr这些辅音怎么发音
  15. 有关 moment()的基本使用
  16. Jam 计数法 思路很清
  17. 批处理文件(bat文件)注册dll
  18. XP下超级终端的配置
  19. 强烈推荐一个下载谷歌浏览器插件的网站!千万别错过!
  20. 基于javaweb的美发店理发店会员管理系统ssm项目源码

热门文章

  1. 成龙坦言演蒲松龄曾打退堂鼓:我演大文豪谁信啊
  2. C++笔记——第一个MFC程序
  3. Android程序员必装apk
  4. 【转】Android Hook框架Xposed详解
  5. QQ微云图标升级方法 空间免费扩容攻略
  6. Java中Calendar基本使用--Comparator.comparing比较排序
  7. 破解WEP密钥过程全解(上)
  8. 腾讯游戏安全高级工程师胡和君:定制化对抗——游戏反外挂的安全实践
  9. TKinter —— GUI in python  4. Handing User Event 小组件 赋功能 (概念 必看!)
  10. AutoCAD系统变量大全