C++基础 2020-11-02

C++简介

  • C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言

  • 任何合法的 C 程序都是合法的 C++ 程序

  • 使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查

面向对象开发的四大特性:

  • 封装

  • 抽象

  • 继承

  • 多态

标准库

  • 核心语言

  • C++ 标准库

  • 标准模板库(STL)

ANSI 标准

ANSI 标准是为了确保 C++ 的便携性

g++使用

  • 自动使用 C++ 标准库

  • $ gcc main.cpp -o main

  • 使用-o选项指定可执行程序的文件名

  • 多个 C++ 代码文件生成一个可执行文件

  • 指定使用 C++11,-std=c++11

  • 也可以使用 makefile 来编译 C/C++ 程序

三字符组

  • 用于表示另一个字符的三个字符序列

  • 从Microsoft Visual C++ 2010版开始,该编译器默认不再自动替换三字符组。

如果希望在源程序中有两个连续的问号,且不希望被预处理器替换,这种情况出现在字符常量、字符串字面值或者是程序注释中,可选办法是用字符串的自动连接:"...?""?..."或者转义序列:"...??..."。

数据类型

  • 宽字符型 wchar_t

  • typedef short int wchar_t;

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed

  • unsigned

  • short

  • long

typedef

使用 typedef 为一个已有的类型取一个新的名字

枚举类型

enum 枚举名{ 

     标识符[=整型常数], 

     标识符[=整型常数], 

     标识符[=整型常数]

} 枚举变量;
  • 如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。

  • 默认情况下,第一个名称的值为 0,第二个名称的值为 1

变量类型

  • C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上

  • float : 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。

  • double : 双精度浮点值。双精度是1位符号,11位指数,52位小数。

变量声明

  • 变量定义就是告诉编译器在何处创建变量的存储以及如何创建变量的存储

  • 不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

  • 变量声明向编译器保证变量以给定的类型和名称存在

  • 变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明

  • 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用

  • 可以使用 extern 关键字在任何地方声明一个变量

  • 可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次

  • 在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。

变量作用域

有三个地方可以定义变量:

  • 函数或一个代码块内部声明的变量,称为局部变量

  • 函数参数的定义中声明的变量,称为形式参数

  • 在所有函数外部声明的变量,称为全局变量

  • 当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化

  • 正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果

常量

  • 常量是固定值,在程序执行期间不会改变,又叫做字面量

  • 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long),后缀可以是大写,也可以是小写

  • 0x 或 0X 表示十六进制,0 表示八进制

  • 常量以 L(仅当大写时)开头,则表示它是一个宽字符常量(例如 L'x')

  • 字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')

两种简单的定义常量的方式:

  • define 预处理器

  • const 关键字

C++ 中的类型限定符

  • volatile告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。

  • restrict由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。

C++ 存储类

  • 存储类定义变量/函数的范围(可见性)和生命周期

  • auto

  • register

  • static

  • extern

  • mutable

  • thread_local (C++11)

从 C++ 17 开始,auto 关键字不再是 C++ 存储类说明符,且register 关键字被弃用。

auto

  • 声明变量时根据初始化表达式自动推断该变量的类型

  • 声明函数时函数返回值的占位符

register

  • register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量

  • 变量的最大尺寸等于寄存器的大小

  • 不能对它应用一元的 '&' 运算符(因为它没有内存位置

  • 只用于需要快速访问的变量,比如计数器

  • 不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中

static

  • 指示编译器在程序的生命周期内保持局部变量的存在

  • 使用 static 修饰局部变量可以在函数调用之间保持局部变量的值

  • static 修饰全局变量时,会使变量的作用域限制在声明它的文件内

  • static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享

extern

  • 提供一个全局变量的引用,全局变量对所有的程序文件都是可见的

  • 对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置

  • 有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用

  • extern 是用来在另一个文件中声明一个全局变量或函数

mutable

  • 仅适用于类的对象,允许对象的成员替代常量。

  • mutable 成员可以通过 const 成员函数修改

thread_local

  • 使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容