C++语言对C的增强(2)—— const增强、枚举的增强
1、const基础知识
#include <iostream> int main(void)
{
//const定义常量--->const意味着只读
const int a;
int const b; // 第一个和第二个意思一样,代表一个常整数型 const int *c;//第三个 c是一个指向常整型数的指针(所指向的内存数据不能被修改,但是本身可以修改) int * const d;//第四个 d常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) const int * const e;//第五个 e一个指向常整型的常指针(指针和它所指向的内存空间均不能被修改) return ;
}
红色代表可修改,蓝色代表不可修改
合理的利用const的好处:
(1)指针做函数参数,可以有效的提高代码可读性,减少bug;
(2)清楚的分清参数的输入和输出特性。
如:
int setTeacher_err( const Teacher *p)
const修改形参的时候,在利用形参不能修改指针所指向的内存空间。
2、C语言中的“冒牌货”
#include <stdio.h> int main()
{
const int a = ;
int *p = (int*)&a;
print("a===>%d\n", a);//a=10 *p = ;
print("a===>%d\n", a);//a=11
//C中是只读变量,并不是真正的变量
return ;
}
#include <iostream>
using namespace std; int main(void)
{
const int a = ;//a是真正的常量
int *p = (int*)&a;
cout << "a=" << a << endl;//;a = 10
cout << "*p=" << *p << endl;//* p = 10 *p = ;//改变的是临时开辟的temp变量
cout << "a=" << a << endl;//a = 10
cout << "*p=" << *p << endl;//* p = 20
return ;
}
3、const 和 #define 的相同
(1)C++中的const修饰的,是一个真正的常量,而不是C中变量(只读),在const修饰的常量编译期间,就已经确定下来了;
(2)C++中的const常量类似于宏定义:const int c = 5; ≈ #define c 5
C++中的const常量与宏定义不同:const常量是由编译器处理的,提供类型检查和作用域检查;宏定义由预处理器处理,单纯的文本替换。
C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间
C++中的const常量
可能分配存储空间,也可能不分配存储空间;
当const常量为全局,并且需要在其它文件中使用,会分配存储空间;
当使用&操作符,取const常量的地址时,会分配存储空间;
当const int &a = 10; const修饰引用时,也会分配存储空间。
4、真正的枚举
C语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而C++中枚举变量, 只能用被枚举出来的元素初始化。
#include <iostream>
using namespace std; enum season{spring,summer,autumn,winter}; int main(void)
{
enum season s = spring;
//s = 0; //error,但是C语言可以通过
s = summer;
cout << "s=" << s << endl; //
return ;
}
C++语言对C的增强(2)—— const增强、枚举的增强的更多相关文章
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...
- 增强篇3 SAP表字段增强
有两种方式: Include 和 Append 1.INCLUDE一般都是标准预留的增强: 以CO01生产订单增强字段为例 在表AUFK中INCLUDE的结构“CI_AUFK”加入自定义字段 保存 ...
- 04C++const增强、枚举的增强
#include <iostream> int main(void) { //const定义常量--->const意味着只读 const int a; int const b; // ...
- C++ c++与C语言的区别(三目运算符,const修饰符)
//区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...
- 【C语言 C++】简单keywordRegister,Const,Static,Volatile,typedef,Define的理解
Register 用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器 中.但对32位编译器不起作用.当global optimizations(全局优化)开的时候,它会 ...
- C语言关键字—-sizeof 、typedef、const、static、register、extern、#define
关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存 ...
- 07.C语言:结构体、共用体、枚举
一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...
- C语言基本语法——结构体、联合和枚举
一.结构体 1.什么是结构体 2.结构体语法格式 3.结构体所占内存空间 4.结构体成员赋值 二.联合 1.什么是联合 2.联合语法格式 三.枚举 1.什么是枚举 2.枚举语法格式 一.结构体 1.什 ...
- 知识点:C语言进阶提高篇,自定义数据类型:枚举
一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型.比如,你可以用一个枚举类型的变量来表示季节,因 ...
随机推荐
- openGL学习进程(1)OpenGL的简介
通过本节,我们来简要了解一下openGL. (1)OpenGL概述: openGL(Open Graphics Library)是个专业的图形程序接口,定义了一个跨编程语言.跨平台的编 ...
- java WordUtils word文档工具类
package com.sicdt.library.core.utils; import java.io.ByteArrayOutputStream; import java.io.IOExcepti ...
- 20165101刘天野 2017-2018-2 《Java程序设计》第8周学习总结
#20165101刘天野 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章Java多线程机制 一.进程与线程 1.1.任务调动 大部分操作系统(如Wi ...
- IEnumerable的一些基本方法
在说明用法之后,先要弄点数据. class Product { public int ID { get; set; } public string Name { get; set; } public ...
- Go 书单
一.<Go语言学习笔记> (未找到对应版本的电子书,大家可以去作者github:https://github.com/qyuhen/book) 推荐理由:作为时下流行的一种系统编程语言,G ...
- vector对象
vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector<int> 定义和初始化vector对象: vector<T> v1 ...
- centos 源码安装php5.5
系统环境: CentOS 6.5 / 7.0 x86_64 Fedora 20 x86_64下载 PHP 源码包 # wget http://cn2.php.net/distributions/php ...
- window 下安装并启动zookeeper
1.下载zookeeper压缩包并解压大到磁盘中: 2.进入解压文件的: 3.进入conf,修改配置文件如下: 4.启动: 启动完成:
- request.getPathInfo();
request.getPathInfo(); 这个方法返回请求的实际URL相对于请求的serlvet的url的路径.(个人理解.)比如,有一个Servlet的映射是这样配置的: <servlet ...
- linux下 stat statfs 获取 文件 磁盘 信息
stat函数讲解 表头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int st ...