#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
#include <iostream>
是什么意思呢?
C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。
using namespace std;
是什么意思呢?
using namespace std;
表示声明一个命名空间的意思。
多人合作的时候很有用,当你定义了变量 a,别人也定义了变量 a,这样就重复定义了。若你在自己的命名空间中定义了 a,别人在别人的命名空间中定义了 a,这样就不重复了,如:
using namespace xx;
using namespace yy;
xx::a
和 yy::a
虽然都叫 a,但是不是同一个变量。
std
是系统标准的命名空间,为了和用户定义的名字不重复,所以它声明在 std
这个命名空间中。
尽量避免使用 using namespace std;
等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std 中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
std::cout << "Hello World" << std::endl;
等直接由命名空间组合起来的全称。
::
是什么意思呢?
在 C++ 中表示作用域,和所属关系。 :: 是运算符中等级最高的,它分为三种:
作用域符号 | 全局作用域符号 | 作用域分解运算符 |
前面一般是类名称,后面一般是该类的成员名称 (C++为避免不同的类有名称相同的成员) | 当全局变量在局部函数中与其中某个变量重名 | 在类外对未在类内的成员函数进行定义的成员函数进行定义 |
A::member就表示类A中的成员member B::member就表示类B中的成员member | 在局部函数中重名变量前加::表示该为全局变量 | 声明了一个类 A,类 A 里声明了一个成员函数 void f(),但没有在类的声明里给出f的定义,那么在类外定义 f 时,就要写成 voidA::f(),表示这个 f() 函数是类 A 的成员函数。 |
endl
可用“\n”
替换
"\n"与endl的区别 | |
"\n" | endl |
表示内容为一个回车符的字符串 | 流操纵子,输出一个换行符并理解刷新缓冲区 |
cout << endl;等价于 cout << '\n' << flush; |
#include <iostream>
int main()
{
std::cout << "Hello world!\n";
return 0;
}
如何使程序运行完后黑框暂停显示,等待输入,而不是闪退?
包含头文件 stdlib.h
,并在主程序中加入 system("pause");
#include <iostream>
#include <stdlib.h>
int main()
{
std::cout << "Hello world!\n";
return 0;
system("pause");
}
分别使用.h和.cpp定义一个类 | |
.h | .cpp |
存放类的声明(declaration),函数原型(放在类的声明中) 头文件中只能定义一次,需要使用函数/类时,在cpp中include该头文件 | 存放函数体,存放定义(definition) |
include< >与include“ ” | |
include< > | include“ ” |
先去系统目录中找头文件,若没有再到当前目录下找。 | 先在当前目录中找头文件,若没有再到系统目录下找。 |
像标准的头文件 stdio.h、stdlib.h | 用于 include 自定义的头文件 |
C++注释的方法有哪些?
1.单行注释:
//我是单行注释
2.多行注释/块注释(不可嵌套):
/*
我是多行注释
*/
3.程序注释(可嵌套):
#if 0
code//对程序调试也有帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。
#endif
#if condition//#if 后可以是任意的条件语句。
code1//若 condition 条件为 true 执行 code1 ,否则执行 code2。
#else
code2
#endif