C++学习——hello world

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

"\n" 表示内容为一个回车符的字符串。
std::endl 是流操作子,输出的作用和输出 "\n" 类似,输出一个换行符,并立即刷新缓冲区
因此,std::cout << std::endl;相当于std::cout << '\n' << std::flush;
对于有输出缓冲的流(例如cout、clog),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout 来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl 代替 '\n' 一般是个好习惯。

2.在 C++ 中,分别使用.h 和.cpp 来定义一个类。

  • .h 中存放类的声明,函数原型(放在类的声明中)。
  • .cpp 存放函数体,存放定义。

cpp文件用于存放类的定义 definition,h 文件用于存放类的声明 declaration。

在头文件中声明了一个函数或者类,需要定义或者使用这个函数或者类时,需要在 cpp 文件中 include 这个头文件

3.include后面的符号差异

  • <> 先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h 等用这个方法。

  • " " 首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的

4.C++中的using namespace std的含义

声明一个命名空间的意思。命名空间在多人合作的时候很有用,因为你定义了变量 a,别人也定义了变量 a,这样就重复定义了。如果你在自己的命名空间中定义了 a,别人在别人的命名空间中定义了 a,这样就不重复了,比如:
using namespace xx;
using namespace yy;

xx::a 和 yy::a 虽然都叫 a,但是不是同一个变量。
std 是系统标准的命名空间,为了和用户定义的名字不重复,所以它声明在 std 这个命名空间中。另外,这个空间也像一个大包一样,包括了系统所有的支持。

5.作用域符号::

:: 在 C++ 中表示作用域,和所属关系。 :: 是运算符中等级最高的,它分为三种,分别如下:

5.1 作用域符号

作用域符号 :: 的前面一般是类名称,后面一般是该类的成员名称,C++ 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。

例如:A,B 表示两个类,在 A,B 中都有成员 member。
那么:
1、A::member就表示类A中的成员member。
2、B::member就表示类B中的成员member。

5.2 全局作用域符号

全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用 :: 来区分,例如:
char zhou; //全局变量
void sleep()
{
char zhou; //全局变量
char(局部变量) = char(局部变量)*char(局部变量);
::char(全局变量) =::(全局变量) *char(全局变量)
}

5.3 作用域分解运算符:

:: 是 C++ 里的作用域分解运算符,“比如声明了一个类 A,类 A 里声明了一个成员函数 void f(),但没有在类的声明里给出f的定义,那么在类外定义 f 时,就要写成 voidA::f(),表示这个 f() 函数是类 A 的成员函数。例如:

class CA
{
public:
int ca_var;
int add(int a, int b);
int add(int a);
}
//那么在实现这个函数时,必须这样写:
int CA::add(int a, int b)
{
return a + b;
}
//另外,双冒号也常常用于在类变量内部作为当前类实例的元素进行表示,比如:
int CA::add(int a)
{
return a + ::ca_var;
}
//表示当前类实例中的变量ca_var。

你可能感兴趣的:(C++学习——hello world)