写在前面:
本人小白一枚,之前虽然学过C,但是感觉学的比较浅显,现准备入C++的坑......选了C++primer作为入门学习书籍(真心厚啊。。。从来没看过这么厚的书)。之前没有写过博客,这次写博客呢一是将学习的内容记下来,就是学习笔记,二是以这种方式督促自己能够学得更加透彻。如果有不当之处,还请大家指出。
一、 简单的C++程序
main函数——程序的入口,操作系统通过调用main来运行C++程序。
最简单的main函数:
int main()
{
return 0;//返回值0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。
}
main函数的返回类型必须为int,即整数类型。
函数的定义:返回类型、函数名、形参列表(允许为空,例如main函数)、函数体。
main的返回值被用来指示状态。返回0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。
二、输入输出(IO机制)
C++包含了一个全面的标准库来提供IO机制——iostream库。
4个IO对象:
cin——标准输入,istream对象
cout——标准输出,ostream对象
cerr——标准错误,用来输出警告和错误消息,ostream对象
clog——用来输出程序运行时的一般性信息,ostream对象
头文件:
#include <iostream>
输出运算符(<<):
std::cout<<"Enter two numbers"<<std::endl;
该输出语句使用了两次<<运算符,因为此运算符返回其左侧的运算对象,因此第一个运算符的结果成为了第二个运算符的左侧运算对象。
运算符endl被称为操纵符。写入endl的效果是结束当前行,并将于设备关联的缓冲区中的内容刷到设备中。缓冲区新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅仅停留在内存中等待写入流。
前缀std::指出名字cout和endl是定义在名为std的命名空间中。标准库定义的所有名字都在命名空间std中。
输入运算符(>>):
std::cin>>v1>>v2;
与输出运算符类似,输入运算符返回其左侧运算对象作为其计算结果。
std::cout<<"The sum of "<<v1<<" and "<<v2
<<" is "<<v1+v2<<std::endl;
标准库定义了不同版本的输入输出运算符,来处理这些不同类型的运算对象。
三、注释
单行注释://
界定符对注释:/*和*/(注释内的每一行都以一个星号开头,从而指出整个范围内都是多行注释的一部分)
注释界定符不能嵌套,否则会出现错误。
四、控制流
1.while语句
while语句反复执行一段代码,直至给定条件为假为止。
形式:
while(condition)
statement
复合赋值运算符(+=):
sum+=val;//等价于sum=sum+val
前缀递增运算符(++):
++val;//等价于val=val+1
2.for语句
for(init-statement;condition;expression)
3.读取数量不定的输入数据
#include <iostream>
int main()
{
int sum=0,value=0;
while(std::cin>>value)
sum+=value;
std::cout<<"Sum is: "<<sum<<std::endl;
return 0;
}
当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效的输入时,istream对象的状态会变得无效。处于无效状态的istream对象会使条件为假。
在Windows系统中,输入文件结束符的方法是敲Ctrl+Z,然后按enter键。在UNIX系统中,包括Mac OS X系统中,文件结束符输入是用Ctrl+D。
4.if语句
相等运算符(==)
if(val==currVal)
注意:C++用=进行赋值,用==作为相等运算符。两个运算符都可以出现在条件中,一个常见的错误是想在条件中使用==(相等判断),却误用了=。
5.类简介
一个类定义了一个类型,以及与其关联的一组操作。
习惯上,头文件根据其中定义的类的名字来命名。我们通常使用.h作为头文件的后缀,标准库头文件一般不带后缀.
包含来自标准库的头文件时,应该用尖括号<>包围头文件名。对于不属于标准库的头文件,用双引号" "包围:
#include <iostream>
#include "Sales_data.h"
每个类实际上都定义了一个新的类型,其类型名就是类名。与内置类型一样,我们可以定义类类型的变量:
Sales_item item;
成员函数是定义为类的一部分的函数,有时也被称为方法。
使用点运算符(.)和调用运算符(())来调用一个成员函数:
item.isbn()