c++

C++中 "\n" 与 endl 的区别是什么?

"\n" 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 "\n" 类似,但可能略有区别。

std::endl 输出一个换行符,并立即刷新缓冲区。

例如:

std::cout << std::endl;

相当于:

std::cout << '\n' << std::flush;
或者
std::cout << '\n'; std::fflush(stdout);

由于流操作符 << 的重载,对于 '\n' 和 "\n",输出效果相同。

对于有输出缓冲的流(例如cout、clog),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout 来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl 代替 '\n' 一般是个好习惯。

对于无缓冲的流(例如标准错误输出流cerr),刷新是不必要的,可以直接使用 '\n'。

 

 

.h 中存放类的声明,函数原型(放在类的声明中)。

.cpp 存放函数体。

也就是说,一个存放声明(declaration),一个存放定义(definition)。

如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 cpp 中需要 include 这个头文件。

同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 cpp 中需要 include 这个头文件。

对于类的设计者来说,头文件就像他们和类的使用者的一个合同,编译器会强化这一合同,它会要求你在使用这些类里的函数或结构时必须要声明

 

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

 

using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。

 

 

枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。

 

如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。

 

创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

 

enum 枚举名{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
... 
    标识符[=整型常数]
} 枚举变量;

 

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。

 

例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

 

enum color { red, green, blue } c;
c = blue;

 

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。

 

enum color { red, green=5, blue };

 

在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。

 

 

short int  有符号短整数

short unsigned int   无符号短整数

无符号短整数范围 0 到 65535
有符号短整数范围 -32768 到 32767
超过范围后 32767+1 输出为 -32768
所以50000输出为 -32768+50000-32768=-15536

auto 1和int 1是一样的

 

extern 存储类

extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 'extern' 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。

extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候,如下所示:

第一个文件:main.cpp

实例

#include <iostream> int count ; extern void write_extern(); int main() { count = 5; write_extern(); }

第二个文件:support.cpp

实例

#include <iostream>
extern int count;
void write_extern(void)
{ std::cout << "Count is " << count << std::endl; }

在这里,第二个文件中的 extern 关键字用于声明已经在第一个文件 main.cpp 中定义的 count。现在 ,编译这两个文件,如下所示:

$ g++ main.cpp support.cpp -o write

这会产生 write 可执行程序,尝试执行 write,它会产生下列结果:

$ ./write
Count is 5


无限循环for( ; ; )

cout << "Total value is :" << result << endl;引用参数要用<<符号,最后必须加一个end1

类,有点像结构
class Box
{
public:
double length;// 盒子的长度
double breadth; // 盒子的宽度
double height; // 盒子的高度
};
C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
数据封装是一种把数据和操作数据的函数捆绑在一起的机制
C++ 通过创建来支持封装和数据隐藏(public、protected、private)。
纯虚函数是通过在声明中使用 "= 0" 来指定的
设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用
流的概念:stream是流的意思,指数据从外流到内或者从内流到外。


在 C++ 编程中,我们使用流提取运算符( >> )从文件读取信息,



 template模板    

template <typename T>

inline T const& Max (T const& a, T const& b)

{ return a < b ? b:a; }

数组传递参数的问题,比如int a(int b[3])这样实际上是传递的第3个数,而不是整个数组,要想把数组从外面传到里面,在外面定义a[3],那就要传两个参数int a(int* a,int length)length负责传数组的长度。

 
posted @ 2019-07-27 10:15  lzdxd1  阅读(159)  评论(0编辑  收藏  举报