1.函数的定义包含四部分:返回类型、函数名、形参列表以及函数体。
2.一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算。比如整形类型int是一种内置类型,即语言自身定义的类型。
3.集成开发环境IDE将编译器与其他程序创建和分析工具包装在一起,在开发大型程序时,这类集成环境可能是非常有用的工具,但是使用命令行界面更容易将精力集中于语言本身,而不是一些开发工具。而且一旦掌握了语言,IDE通常是很容易学习的。
4.访问main函数返回值的方法依赖于系统。在UNIX和Windows系统中执行完一个程序后,都可以通过echo命令获得其返回值。在Unix系统中,通过如下命令获得状态:
$ echo $?
在Windows系统中查看状态可键入:
$ echo %ERRORLEVEL%
5.最常用的编译器是GNU编译器和微软visual studio编译器。默认情况下,运行GNU编译器的命令是:
$ g++ -o prog1 prog1.c
注意:根据使用的GNU编译器的版本,你可能需要指定-std=c++0x参数来打开对C++11的支持。
运行微软visual studio编译器的命令为cl:
C:\Users\me\Programs> cl /EHsc prog1.cpp
6.iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流,一个流就是一个字符序列,是从IO设备读出或写入IO设备的。术语“流”想要表达的是,随着时间的推移,字符是顺序生成或消耗的。
标准库定义了4个IO对象:
cin-istream类型的对象-标准输入
cout-ostream类型的对象-标准输出
cerr-ostream类型的对象-标准错误-通常用来输出警告和错误消息
clog-ostream类型的对象-用来输出程序运行时的一般性信息
向流写入数据
std::cout << "Enter two numbers:" << std::endl;
一个表达式产生一个计算结果,它由一个或多个对象和(通常是)一个运算符组成。
这条语句中的表达式使用了输出运算符(<<)在标准输出上打印消息,此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果就是其左侧运算对象,即返回其左侧的运算对象,第一个运算符的结果作为第二个运算符的左侧运算对象。等价于:
(std::cout << "Enter two numbers:") << std::endl;
endl是一个被称为操纵符的特殊值。写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输入流中,而不是仅停留在内存中等待流。
从流中读入数据std::cin >> v1 >> v2;的输入运算符与输出运算符类似
7.命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。
我们使用作用域运算符(::)来指出我们想使用的定义在命名空间中的名字。
8.单行注释和界定符对注释
指出下列哪些输出语句是合法的:
std::cout << "/*"; //合法,输出结果:/*
std::cout << "*/"; //合法,输出结果:*/
std::cout << /* "*/" */; //不合法,缺少右"
std::cout << /* "*/" /* "/*" */; //合法,输出结果: /*
9.while语句
while(condition)
statement
10.for语句
每个for语句都包含两部分:循环头和循环体。循环头控制循环执行的次数,它由三部分组成:一个初始化语句、一个循环条件以及一个表达式。
int sum = 0;
for(int val = 1; val <= 10; ++val)
sum += val;
简要重述一下for循环的总体执行流程:
1.创建变量val,将其初始化为1.
2.检测val是否小于等于10.若检测成功,执行for循环体。若失败,退出循环,继续执行for循环体之后的第一条语句。
3.将val的值增加1.
4.重复第2步的条件检测,只要条件为真就继续执行剩余步骤。
11.再探编译
编译器的一部分工作是寻找程序文本中的错误。编译器没能力检查一个程序是否按照作者的意图工作,但可以检查形式上的错误。下面列出了一些最常见的编译器可以检查出的错误。
语法错误:语言文法上的错误。如不合规的语句格式、函数少参数等。
链接错误:链接程序与库文件形成可执行文件,缺少头文件等引起链接错误。
运行时错误:如除数为0.
逻辑错误:正确输入而输出结果不正确,如x+y写成了x-y,此类错误编译器检查不出来。
警告性错误:隐形错误如定义却未使用。
12.if语句
统计在输入中每个值连续出现了多少次:
#include <iostream>
int main()
{
int currVal = 0, val = 0;
if (std::cin >> currVal) {
int cnt = 1;
while(std::cin >> val) {
if (val == currVal)
++cnt;
else {
std::cout << currVal << " occurs " << cnt << " times " << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs " << cnt << " times " << std::endl;
}
return 0;
}
13.使用文件重定向
$ addItems <infile >outfile
addItems是已经编译为名为addItems.exe(在Unix中是addItems)的可执行文件,上述命令将会从一个叫做infile的文件中输入到addItems中,并将结果写入到一个名为outfile的文件中,两个文件都位于当前目录。
14.类简介
实际上,C++最初的一个设计焦点就是能定义使用上像内置类型一样自然的类类型。
事例代码http://www.informit.com/title/0321714113
http://www.informit.com/store/c-plus-plus-primer-9780321714114
Downloads
Download the source files for GCC 4.7.0.
Download the source code files for MS Visual Studio 2012
Download the source code files for GCC pre-C++ 11 compilers 2012.
Download the source code files for Microsoft pre-C++ 11 compilers.
item1.isbn()调用名为isbn的成员函数。
成员函数是定义为类的一部分的函数,有事也被成为方法。我们通常以一个类对象的名义来调用成员函数。
使用点运算符(.)来表达我们需要类对象的成员函数。点运算符只能用于类类型的对象。其左侧运算对象必须是一个类类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为右侧运算对象指定的成员。
当用点运算符访问一个成员函数时,通常我们是想调用该函数。我们使用调用运算符(())来调用一个函数。调用运算符是一对圆括号,里面放置实参列表。