c++ primer开始部分

前言:本人在本科阶段已经学习过c++,但是仅仅停留在class怎么编写的水平上,也没有仔细的读过c++ primer这本书,上了研究生之后,感觉对c++的了解太少了,于是买过来c++ primer这本书,准备认真细读。博客作为学习笔记,请勿转载。同时也希望找到志同道合的朋友,一起学习,有兴趣的可加q:952722706。如果笔记内容有不对的地方,也希望各位大佬指正。

1、编写一个最简单的c++程序,首先要知道什么是函数?

  1. 每个c++程序都包含一个或者多个函数,其中一个必须命名为main函数。
  2. main函数的返回值类型必须为int类型,在大多数系统中,main的返回值被用来指示状态,返回值为0表示调用成功,  非0的返回值的含义由系统来定义,通常是用来指出错误类型的。

2、初识输入输出

      实际上,在c++语言中并未定义任何输入输出(IO)语句,取而代之,包含了一个全面的标准库(standard library)来提供IO机制(除了IO之外,也提供其他的很多设施)。

      在c++中,输入输出都使用了iostream库,iostream库包含了两个基础类型:istream和ostream,分别用来表示输入流和输出流。(一个流可以看做是一个字符序列,是从IO设备中读出或者是要写入IO设备的)。

      那么iostream库定义了哪些标准输入输出对象呢?

      标准库中定义了4个IO对象,分别如下:

  1. cin      它是istream类型的对象,也被称为标准输入
  2. cout      它是ostream类型的对象,也称为标准输出
  3. cerr      它是ostream类型的对象,用来输出错误和警告信息,因此也被称为标准错误
  4. clog      它是ostream类型的对象,用来输出程序运行时的一般性信息

3、知道了上面1和2之后,下面编写一个简单c++程序,并对该程序进行分析

#include <iostream>

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

运行结果:

上面的程序非常的简单(不要看它很简单,如果深挖还是能挖出一点东西的),读入两个数字并输出这两个数字的和。那么我从里面挖到了哪一些东西呢?

(1)std::cout<<"please input two numbers:"<<std::endl;为什么可以将两个<<链接起来使用?

      首先要知道<<是一个操作符(输出操作符),该操作符接受两个运算对象,左侧的运算对象必须是一个ostream对象,右侧的对象是要打印的值。<<运算符将给定的值写入ostream对象中,所以<<的运算结果就是<<的左侧的运算对象,也就是std::cout,即我们写入了要打印输出的值的ostream对象。

      那么现在来分析一下std::cout<<"please input two numbers:"<<std::endl;

      这一语句使用了两个<<运算符,第一个<<的运算结果还是std::cout,std::cout又作为第二个<<的左侧运算对象,输出std::endl。这样,我们就可以将输出请求用<<链接起来了。

注:输入运算符>>和输出运算符<<类似,它接受一个istream对象作为其左侧运算对象,接受一个对象作为其右侧运算对象。它从给定的istream中读入数据,并将数据存入右侧运算对象中。与输出运算符类似,输入运算符>>返回其左侧运算对象作为计算结果,因此可以将输入请求用>>链接起来使用。

(2)std::endl又是什么呢?

      如果观察程序和运行结果会认为std::cout<<std::endl;是输出一个换行符。我之前是这么理解的,至少效果和输出换行符相同。但是现在觉得这样理解是不对的。写入endl的效果是结束当前行(结束了当前行,,再输出当然会换到下一行),并且将与设备关联的缓冲区中的内容刷新到设备中。缓冲刷新操作可以保证目前为止程序所产生的输出操作都真正写入到输出流中,而不是停留在内存中等待输入流。

(3)std::cout、std::cin、std::endl中的std::有什么作用呢?

      有一点c++基础的人都会知道命名空间(namespace)这个概念。命名空间可以帮助我们避免不经意间的名字定义冲突,但是要使用某一个命名空间中定义的变量时,必须显式的说明引用哪一个命名空间中的变量。这里的cout、cin、endl都是定义在名为std的命名空间中的,因此在使用它们时,要通过使用作用域运算符::来指出我们要使用定义在命名空间std中的名字cout、cin、endl。

4、初识class和成员函数

     在c++中,我们通过定义一个类(class)来定义自己的数据结构。一个类定义了一个类型,以及与其关联的一组操作。

     在一个类的内部定义的变量和操作都是成员,分别称为成员变量和成员函数(成员方法)。我们通常以类的对象的名义来调用成员函数,使用对象名.成员名来调用成员(包括变量和函数)。点运算符只能用于类 类型的对象,即其左侧运算对象必须是一个类 类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为 右侧运算对象所指定的成员。

开始部分就结束了,下一篇开始c++基础部分(包含很多基本语法,不过还是可以过一遍)。以后两天更新一篇博客,希望能做到吧(tutor给的任务太多),立下flag,勉励自己。

猜你喜欢

转载自blog.csdn.net/llfjcmx/article/details/82467250