《C++ Primer》(第5版) Chapter01-Getting Started

阅读《C++ Primer》(第5版),全部笔记


编写一个简单的 C++ 程序

最简单的 main 函数:

int main(){
	return 0;
}

一个函数的定义包含四部分,虽然main函数在某种程度上比较特殊,但其定义与其他函数是一样的。

  • 返回类型(return type)
  • 函数名(functionname)
  • 一个括号包围的形参列表(parameter list,允许为空)
  • 函数体(function body)

main函数的返回类型必须为int,即整数类型。int类型是一种内置类型(built-intype),即语言自身定义的类型。
当return语句包括一个值时,此返回值的类型必须与函数的返回类型相容。
在本例中,main的返回类型是int,而返回值0的确是一个int类型的值。

在大多数系统中,main的返回值被用来指示状态。返回值0表明成功,非0的返回值的含义由系统定义,通常用来指出错误类型。


编译、运行程序

程序源文件命名约定

无论使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)
在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。
不同编译器使用不同的后缀命名约定,最常见的包括.cc、.cxx、.cpp、.cp及.C。

编译器生成一个可执行文件。假定main程序保存在文件prog1.cpp,Windows系统会将这个编译器生成的可执行文件命名为prog1.exe。UNIX系统中的编译器通常将可执行文件命名为a.out。

g++ -o prog1.exe prog1.cpp

-o prog1.exe是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为prog1或prog1.exe的可执行文件:

  • 在UNIX系统中,可执行文件没有后缀;
  • 在Windows系统中,后缀为.exe;
  • 如果省略了-o prog1参数,在UNIX系统中编译器会生成一个名为a.out的可执行文件,在Windows系统中则会生成一个名为a.exe的可执行文件

运行微软Visual Studio 2010编译器的命令为cl:

cl /EHsc prog1.cpp 

命令cl调用编译器,/EHsc是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。可执行文件的文件名与源文件名相同,后缀为.exe。在此例中,可执行文件的文件名为prog1.exe。


初识输入输出

标准输入输出对象

标准库定义了4个IO对象。

  • 处理输入,使用一个名为cinistream类型的对象,也被称为标准输入(standard input)。
  • 对于输出,使用一个名为coutostream类型的对象,也被称为标准输出(standard output)。
  • 标准库还定义了其他两个ostream对象,名为cerrclog。通常用cerr来输出警告和错误消息,也被称为标准错误(standard error),而clog用来输出程序运行时的一般性信息。
#include <iostream>

int main() {
    std::cout << "Enter two numbers: " << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2;
    std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << std::endl;
    return 0;
}

#include <iostream> 告诉编译器我们想要使用iostream库。尖括号中的名字(本例中是iostream)指出了一个头文件(header)。每个使用标准库设施的程序都必须包含相关的头文件。#include指令和头文件的名字必须写在同一行中。
通常情况下,#include指令必须出现在所有函数之外。一般将一个程序的所有#include指令都放在源文件的开始位置。

前缀std::指出名字coutendl是定义在名为std命名空间(namespace)中的。命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std中。


注释简介

C++中注释的种类

单行注释:单行注释以双斜线(//)开始,以换行符结束。当前行双斜线右侧的所有内容都会被编译器忽略,这种注释可以包含任何文本,包括额外的双斜线。

界定符对注释:/*和*/。这种注释以/*开始,以*/结束,可以包含除*/外的任意内容,包括换行符。编译器将落在/*和*/之间的所有内容都当作注释。注释界定符不能嵌套。


类简介

每个类实际上都定义了一个新的类型,其类型名就是类名。因此,比如Sales_item类定义了一个名为Sales_item的类型。与内置类型一样,可以定义类类型的变量。当写下如下语句,是想表达item是一个Sales_item类型的对象。

Sales_item item;

类型。与内置类型一样,可以定义类类型的变量。当写下如下语句,是想表达item是一个Sales_item类型的对象。

Sales_item item;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值