文档章节

【Essential C++ 学习笔记】第一章 基础编程 - 初识 C++

JokerHuang
 JokerHuang
发布于 2016/08/11 00:10
字数 1612
阅读 60
收藏 1
点赞 0
评论 0

本章导航

初识 C++

运算符

控制语句

数组和向量

初识指针

文件的读写


内置数据类型

概述

C++ 提供了一组内置的数据类型,并且每一个基础数据类型都有与之相对应的系统关键字,用于指定该类型。

基础数据类型

数据类型关键字
整数int
布尔值bool
字符char
单精度浮点数float
双精度浮点数double

小结

  1. 虽然 C++ 为我们提供了基础数据类型,但是他们并非是我们编程任务的重心。
  2. 有其他关键字可以修饰部分基础数据类型关键字,如:long int、short int、unsigned int、long double、unsigned long int 等等。

函数

概述

函数是一块独立的程序代码序列,能够执行一些运算。它包含四个部分:返回值类型函数名参数列表函数体。分别介绍各自的作用及注意事项:

  1. 返回值类型:返回值通常用来表示运算结果。返回值类型就是描述这个返回值的数据类型。
  2. 函数名:函数名可以是任何字母、数字、下划线的组合,不能以数字开头;其次不能是关键字;再者需要有一定的语义,可以让人容易的了解这个函数的作用;最后最好不要过长。
  3. 参数列表:由两个小括号括住,置于函数名之后,可以是空的参数列表,如:main()。参数列表用来表示“函数执行时,调用者可以传递给函数的类型列表”,列表之中用逗号分隔各个类型。
  4. 函数体:函数体是有一组花括号括住的代码片段。

小例子

int setAge(int age) {
    // 这里是代码片段
    return 0;
}

return 关键字

return 是 C++ 中的关键字,紧接于 return 之后的表达式,也就是此函数的返回值。

小结

  1. 第一章里对函数的描述很简单,其实函数的水很深,比如:变长参数列表、声明等等,配合上类的使用更是变幻莫测,期待本书有更多篇幅的介绍。
  2. 基本的函数使用和其他语言类似。

初识类

C++ 事先定义好了一些基础数据类型,但他们并不能满足我们日常编程任务需要,这时候类的概念应运而生,class 机制赋予了我们增加程序内类型抽象化层次的能力。 百度百科描述类的定义为:用来描述对象,所谓的对象是指现实世界中的一切事物,那么类就可以看做是对相似事物的抽象。 所谓类,就是用户自定义的数据类型。

C++ 标准库

C++ 强大的功能来源于其丰富的类库及库函数资源。C++ 标准库的内容总共在 50 个标准头文件中定义。在 C++ 开发中,要尽可能地利用标准库完成。 C++ 的标准库都封装在 std 命名空间内,将在之后的篇章内做出对命名空间的介绍,这里只要了解即可。

class 的定义

一般来说分为两部分,分别写在不同的文件内,分别为:

  1. 头文件用来声明该 class 所提供的各种操作行为;
  2. 类的代码文件则包含了这些操作行为的实现内容。

class 的使用

使用 class,我们必须先在程序中包含 class 的头文件,头文件可以让程序知道 class 的定义。

类的声明

std::string userName;

这样一条语句便定义了一个名为 userName 的对象,它属于 std::string 类。这样的定义语句有一个特别的名称,称为声明语句。单写这么一条语句还不行,还必须让程序知道 std::string 类的定义,因此还需要在程序的开始包含对 std::string 的头文件:

#include <string>

对象的初始化

初始化方法

初始化方法分为两种赋值操作符初始化语法构造函数语法,一般来说将每个对象初始化是个好习惯。

赋值操作符初始化语法

int age = 0;
int height = 0;
int length = 0, weight = 0;

上面三行可见,在单一声明语句中,定义多个相同类型对象可以使用逗号分隔。

构造函数语法

使用赋值操作符进行初始化沿袭自 C 语言,但是如果对象需要多个初值,这种方式就没办法完成了,以标准库中的复数类为例,它的初始化需要两个初值,一为实部,二为虚部。于是便引入了构造函数语法

#include <complex>
std::complex<double> purei(0, 7);

这里使用了模板类,以后再做解释,只是想表示下构造函数语法的使用方式。


引申内容

语句 ( statement )

std::cout << "Please enter your first name:";

上面这行代码就是 C++ 所谓的语句,语句是 C++ 程序的最小独立单元,以分号作为结束。

转义字符

常用的转义字符

| 转义字符 | 含义 | | :-----: | :--: | | \r | 回车 carriage return | | \n | 换行 newline | | \t | 制表符 tab | | \0 | null | | \' | 单引号 single quote | | \" | 双引号 double quote | | \\ | 反斜线 backslash | 值得注意的是 Unix 系统每行的结束是换行符 \n,Mac 系统每行的结束是回车符 \r,Windows 系统每行的结束是换行回车 \n\r。直接导致一个问题是 Unix/Mac 文件在 Windows 中打开,显示是在一行上的,而 Windows 文件在 Unix/Mac 下打开每行多了一个^M符号!


心得体会

第一次这样写学习笔记,有点不太适应,内容也有点乱糟糟,希望通过学习 Essential C++ 这本书,一来让我对 C++ 有个更好的入门体验,二来也提高下自己的文笔。各位大神如果发现有不对的地方请指正,大家一起学习。如果要转请注明出处来自JokerHuang,不过我觉得也没人会转...

© 著作权归作者所有

共有 人打赏支持
JokerHuang
粉丝 3
博文 6
码字总数 7272
作品 0
苏州
高级程序员
如何自学成为C/C++程序员大牛

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/11
0
0
大神有话说之c++,还在迷茫的朋友可以来看一下

C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Window...

悟空_b201
05/30
0
0
VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819
05/23
0
0
CSDN回帖得分大全(近两年)

√ vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] √ 为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] √ CFileFind::FindFile 支持通配...

junwong
2012/03/09
0
0
C语言/C++永远都不会过时的编程语言

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
03/30
0
0
C语言/C++编程新手学习常见问题

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/11
0
0
玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不...

元谷
2013/12/18
0
0
c语言基础学习11_项目实战:IDE(集成开发环境)

============================================================================= ============================================================================= 涉及到的知识点有: 一......

黑泽明军
01/29
0
0
Effective C++ 笔记(1):视C++为语言联邦

条款一(clause 1) 将C++视为语言联邦:提出了一种将C++分为四种不同次语言的观念,四种次语言分别是: 1、C语言,面向过程的语言,C++完全向下兼容C,在C++中单纯使用C语言的语法除了遵守的一...

oldpan
2017/09/10
0
0
《C++ primer》读后感:时代的经典

说起Lippman的C++ Primer,我总是有种特殊感情。这本书既是我进入C++领域的敲门砖,也是我第一次在网络上发表技术文章的对象。当年读书笔记中的青涩迷惘和年少轻狂都还历历在目,转眼已经从第...

凌杰_owlman
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
2
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
1
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
1
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部