c++ premier学习笔记(unit1

您所在的位置:网站首页 x-mier是什么品牌 c++ premier学习笔记(unit1

c++ premier学习笔记(unit1

2023-07-26 20:30| 来源: 网络整理| 查看: 265

(因为我这里很多地方都是直接引用了原作,所以我这篇文章归类为"转载“)

1、错误信息通常包含一个行号和一条简短描述,描述了编译器认为的我们所犯的错误。按照报告的顺序来住个修正错误,是一种好习惯。因为一个单个错误常常会具有传递效应,导致编译器在其后报告比实际数量多得多的错误信息。另一个好习惯是在酶修正一个错误后就立即重新编译代码,或者最多是修正了一一小部分明显错误后就重新编译。这就是所谓的“edit-compile-debug”周期

2、关于c++的格式问题

c++程序很多程度上是格式自由的,但是还是有一点点的要求。类似int main(){}中的左花括号,就必须是形参列表右面的第一个非空、非注释的字符。

虽然很多程度上可以按照自己的意愿自由的设定程序的格式,但我们所做的选择会影响程序的可读性。例如,我们可以将整个main函数写在很长的单行内,虽然这样是合乎语法的,但会非常难读

关于c/c++的正确格式的辩论是无休止的。

我们需要牢记的一件重要的事情:其他可能的程序格式总是存在的。当你要选择一种格式风格时,思考一下它会对程序的可读性和易理解性有什么影响,而一旦选择了一种风格,就要坚持使用。

3、一些小格式

从书上面了解到的是,通常都是后面直接加一个花括号,然后另外一个花括号在最后一行换行然后上下紧贴那个循环体 eg while、for、do(while)……

while(){

 

 

}else{

}

4、类的一些说明

4.1为了使用类,我们需要了解三件事情

类名是什么?

它是在哪里定义的?

它支持什么操作?

对于书店程序来说,我们假定类名为Sales_item,头文件Sales_item.h中已经定义了这个类

对于不属于标准库的头文件,则用双引号(“”)包围。

如前所见,为了使用标准库设施,我们必须包含相关的头文件。类似的,我们也需要使用头文件来访问为自己的应用程序所定义的类。习惯上,头文件根据其中定义的类的名字来命名。我们通常使用.h作为头文件的后缀,但也有一些程序员习惯.H,.hpp或.hxx。标准库头文件通常不带后缀。编译器一般不关心头文件名的形式,但有的IDE对此有特殊的要求。

为了使用一个类,我们不必关心它是如何实现的,只需知道类对象可以执行什么操作。就像Sales_item类的作用是表示一本书的总销售额、售出册数和平均售价。

每个类实际上都定义了一个新的类型,其类型名就是类名。(也就是说,我们如果定义好了,那么我们就可以很简单的使用,类似int char string double float之类的数据了)

一般而言,类的作者决定了类类型对象上可以使用的所有操作。

4.2

成员函数的概念

成员函数是定义为类的一部分的函数,有时也被称为方法。

当用点运算符访问一个成员函数时,通常我们是想(效果也确实是)调用该函数。我们使用调用运算符(())来调用一个函数。调用运算符是一对圆括号,里面放置实参列表(可能为空)。成员函数isbn并不接收参数。因此

item.isbn();

5、关于注释的相关笔记

5.1、//只能用于单行注释

5.2、/* */可以用于整段的注释

       /*

        *

        *

        */采用这一种格式

5.3、注释界定符是不能够嵌套的!这样子会出现很多奇奇怪怪的错误。

5.4、因此我们通常在debug的时候使用//来注释一行一行一行一行

6、关于输入不定量数据

6.1、 while(cin>>x)

这个时候我们是使用一个istream对象作为条件,其效果是检测流的状态。

如果流是有效的,那么检测成功。

如果遇到了EOF或者无效的输入(例如一个数据不是整数)

istream对象的状态会变为无效。

6.2、 关于手动输入EOF的操作方法:

windows ctrl+Z

Unix和Mac OS X ctrl+D

7、一个我感觉和oj很有趣的点

当你测试程序时,反复从键盘敲入这些销售记录作为程序的输入,是非常乏味的。大多数操作系统支持文件重定向,这种机制允许我们将标准输入和标准输出与命名文件关联起来:

$addItemsoutfile

假定$是操作系统提示符,我们的加法程序已经编译名为addItems.exe的可执行文件(在UNIX中是addItems),则上述命令会从一个名为infile的文件读取销售记录,并将输出结果写入到一个名为outfile的文件中,两个文件都位于当前目录中。

8、相关术语解释

8.1、 缓冲区(buffer) 一个存储取余,用于保存数据。IO设施通常将输入(或输出)数据保存在一个缓冲区中,读写缓冲区的动作与程序中的动作是无关的。我们可以显示地刷新输出缓冲,以便强制将缓冲区中的数据写入输出设备。默认情况下,读cin会刷新cout;程序非正常终止时也会刷新cout。

8.2、 Cerr一个ostream对象,关联到标准错误,通常写入到与标准输出相同的设备。默认情况下,写到cerr的数据是不缓冲的。cerr通常用于输出错误信息或其他不属于程序正常逻辑的输出内容。

8.3、 Clog一个ostream对象,关联到标准错误。默认情况下,写到clog的数据是被缓冲的,clog通常用于报告程序的执行信息,存入一个日志文件中。

8.4、 数据结构:数据及其上所允许的操作的一种逻辑组合。

8.5、 文件结束符(end-of-file)系统特定的标识,指出文件中无更多数据了。

8.6、 方法(method)成员函数的同义术语。

8.7、 标准库(standard library)一个类型和函数的集合,每个c++编译器都必须支持。标准库提供了支持IO操作的类型。c++程序员倾向于用“库”来指代整个标准库,还倾向于用库类型标识标准库的特定部分,例如用“iostream库”表示标准库中定义IO类的部分

8.8、 (important!)未初始化的变量(uninitialized variable)未赋予初值的变量。类类型的变量如果未指定初值,则按类定义指定的方式进行初始化。定义在函数内部的内置类型变量默认是不初始化的,除非有显示的初始化语句。试图使用一个未初始化变量的值是错误的。未初始化变量是bug的常见成因。

8.9、 ()运算符:调用运算符。跟随在函数名之后的一对括号“()”,起到调用函数的效果。传递给函数的实参放置在括号内。

8.10、           .运算符:左侧运算对象必须是一个类类型对象,右侧运算对象必须是此对象的一个成员的名字。运算结果即为该对象的这个成员。

8.11、           ::运算符 作用域运算符。其用处之一是访问命名空间中的名字。例如std::cout表示命名空间std中的名字cout



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3