IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++【开始】 -> 正文阅读

[C++知识库]C++【开始】

参考资料:C++ Primer 中文版(第5版)——[美] Stanley B. Lippman [美] Josée Lajoie [美] Barbara E. Moo 著 王刚 杨巨峰 译

编译器:Mingw-w64 v8.1.0 中的g++

代码编辑器:VS Code

1. 编译与链接源文件的方法简介

在命令行窗口中切换到要编译的文件所在目录,假如一个应用程序由三个源文件组成,分别是file1.cpp, file2.cpp, file3.cpp,那么请按照下面的步骤进行:

	g++ -c .\file1.cpp
	g++ -c .\file2.cpp
	g++ -c .\file3.cpp

.代表当前文件夹,所以.\file1.cpp就表示当前文件夹中的file1.cpp文件(其实通常情况下.\是可以省略的)。

上面三个命令行执行完毕,当前文件夹中会多出来三个文件,分别是file1.o, file2.o, file3.o,这三个文件都是经过编译器编译后的二进制文件。下面我们将这三个文件进行链接,执行下面的命令即可(假定我们要生成的应用程序名字是my_app):

	g++ .\file1.o .\file2.o .\file3.o -o my_app

这个命令执行完毕,当前文件夹会多出来一个名为my_app.exe的文件,这是一个应用程序。至此,编译和链接的操作就完成了。

2. 初识输入输出

C++依靠一个全面的标准库实现输入输出(IO)。最常用的是iostream库。iostream库包含两个基础类型istreamostream,分别表示输入流和输出流。一个就是一个字符序列,它表达的意思是,随着时间的推移,字符顺序生成或消耗。

2.1 四个标准输入输出对象

  1. cinistream类型的对象,被称为标准输入
  2. coutostream类型的对象,被称为标注输出
  3. cerrostream类型的对象,被称为标准错误
  4. clogostream类型的对象,用来输出程序运行时的一般性信息。

系统通常将程序所运行的窗口与这些对象关联起来,所以标准输入就是从程序当前运行的窗口读入,标准输出标准错误会在程序当前运行的窗口输出。

2.2 向流写入数据

这里我们将用到输出运算符(<<)。例子如下:

//hello.cpp
#include<iostream>

int main(){
    std::cout << "Hello, world!" << std::endl;
    //上面这条语句等价于下面这两条:
    //std::cout << "Hello, world!";
    //std::cout << std::endl;
    
    return 0;
    
    //输出结果如下:
    //Hello, world!
    //
}

coutendl前面的std::指出这两个名字是定义在名为std命名空间namespace)中的。

endl是一个被称为操纵符的特殊值,写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。

2.3 使用标准库中的名字

上面以及提到命名空间namespace)这个词了。命名空间可以把帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。

标准库定义的所有名字都在命名空间std

::被称为作用域运算符,我们通过它来指出我们想使用在命名空间std中的名字,比如cout

2.4 从流读取数据

这里我们将用到输入运算符(>>)。例子如下:

//get_name.cpp
#include<iostream>
#include<string>

int main(){
    std::cout << "Please input your first name and last name:" << std::endl;
    std::string first_name, last_name;
    std::cin >> first_name;
    std::cin >> last_name;
    //上面两条语句等价于下面的一条语句:
    //std::cin >> first_name >> last_name;
    
    std::cout << "I know your name! Your name is " << first_name << " " << last_name << << "!" << std::endl;
    return 0;
    
    //输入:Brouce Lee
    //输出:I know your name! Your name is Brouce Lee!
}

说明:cin读取字符串到string对象,遇到空格便会停止这个对象的读取,所以上面的代码中,变量first_name的值为Brouce,变量last_name的值为Lee

3. 注释简介

C++的注释和C的注释一样,都有两种:

  • 单行注释://后面都是注释
  • 界定符对注释:/**/中间是注释

注意:注释界定符不能嵌套!

4. 控制流

控制流语句允许程序以更复杂的路径执行。

4.1 循环语句

循环语句最常见的有三种:forwhiledo-while,三种可互换,但特定情况下可选择更优越的循环语句。

下面我们以求0~100的和为例,用三种不同的循环语句进行编写。

4.1.1 for 循环

#include<iostream>

int main(){
    int N = 100, result = 0;//result存储最终结果,初始化为0
    for(int i=1; i <= N; i++){
        result += i;
    }
    std::cout << "The sum from 0 to 100 is " << result << "." << std::endl;
    return 0;
    //输出结果:The sum from 0 to 100 is 5050.
}

for循环一般比较简洁,适于解决数组相关的问题,但它处理数量不定的数据不如后面两种简洁。

4.1.2 while 循环

#include<iostream>

int main(){
    int N = 100, result = 0;//result存储最终结果,初始化为0
    int i = 1;//计数器
    while(i <= N){
        result += i;
        i++;
    }
    std::cout << "The sum from 0 to 100 is " << result << "." << std::endl;
    return 0;
    //输出结果:The sum from 0 to 100 is 5050.
}

while循环一般适用于处理数量不定的数据,比如我们要读取数量不定的输入数据就可以使用while循环,比较方便。

4.1.3 do-while 循环

#include<iostream>

int main(){
    int N = 100, result = 0;//result存储最终结果,初始化为0
    int i = 1;//计数器
    do{
        result += i;
        i++;
    }while(i <= N);
    std::cout << "The sum from 0 to 100 is " << result << "." << std::endl;
    return 0;
    //输出结果:The sum from 0 to 100 is 5050.
}

do-while循环和while循环没什么太大的区别,只是判断在前还是在后的问题。

4.2 判断语句

判断语句最常见的有两种:if-elseswitch语句。和C语言中的用法相同,不再赘述。

5. 类简介

5.1 什么是类?

由于笔者学过Python里面的类,所以对类有了一定的认识。在笔者看来,就是现实世界的模拟。现实世界中的万物可以被分成若干个类,每个类都有一定的特性和固有行为,把这给体现到代码层面,就是属性成员函数。所以,一个类定义了一个类型,以及与其关联的一组操作。

5.2 类的一个简单的例子

一般定义在头文件中,比如我们有一个类为dog,我们把它定义在dog.h中,然后在my_dog.cpp中使用这个类。

//dog.h
class Dog{
    public:
    	Dog(int age, std::string breed);//构造函数,创建实例时需要传入参数
    	void roll();//打滚儿
    	void age();//输出年龄
    	void breed();//输出品种
   	private:
    	int age;//年龄
    	std::string breed;//品种
}

上面public中的函数都是在外部实现的(在名为dog.cpp中实现,此文件略去),这是一个好的习惯,原因此处不提。

下面使用这个类。

//my_dog.cpp
#include"dog.h"
int main(){
    my_dog = Dog(2, "Chihuahua");
    my_dog.roll();//打滚儿
    my_dog.age();//输出年龄
    my_dog.breed();//输出品种
    return 0;
}

运行这个文件便可看到在dog.cpp中定义的相应的输出。


C++【开始】到这里就结束了,我们已经引入了C++的核心内容——,这是面向对象编程的重要内容。后面会更深入地了解它和使用它。

下篇文章预告:C++【C++基础】——变量和基本类型

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:19:21  更:2021-08-15 15:20:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:49:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码