菜鸟教程 -- 学的不仅是技术,更是梦想!

C++ 教程
C++ 教程 C++ 简介 C++ 环境设置 C++ 基本语法 C++ 注释 C++ 数据类型 C++ 变量类型 C++ 变量作用域 C++ 常量 C++ 修饰符类型 C++ 存储类 C++ 运算符 C++ 循环 C++ 判断 C++ 函数 C++ 数字 C++ 数组 C++ 字符串 C++ 指针 C++ 引用 C++ 日期 & 时间 C++ 基本的输入输出 C++ 结构体(struct) C++ vector 容器 C++ 数据结构

C++ 面向对象

C++ 类 & 对象 C++ 继承 C++ 重载运算符和重载函数 C++ 多态 C++ 数据抽象 C++ 数据封装 C++ 接口(抽象类)

C++ 高级教程

C++ 文件和流 C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程

C++ 资源库

C++ STL 教程 C++ 导入标准库 C++ 标准库 C++ 有用的资源 C++ 实例 C++ 测验 C++ <iostream> C++ <fstream> C++ <sstream> C++ <iomanip> C++ <array> C++ <vector> C++ <list> C++ <forward_list> C++ <deque> C++ <stack> C++ <queue> C++ <priority_queue> C++ <set> C++ <unordered_set> C++ <map> C++ <unordered_map> C++ <bitset> C++ <algorithm> C++ <iterator> C++ <functional> C++ <numeric> C++ <complex> C++ <valarray> C++ <cmath> C++ <string> C++ <regex> C++ <ctime> C++ <chrono> C++ <thread> C++ <mutex> C++ <condition_variable> C++ <future> C++ <atomic> C++ <type_traits> C++ <typeinfo> C++ <exception> C++ <stdexcept> C++ <cstdio> C++ <cstdint> C++ <memory> C++ <new> C++ <utility> C++ <random> C++ <locale> C++ <codecvt> C++ <cassert> C++ <cwchar> C++ <climits> C++ <cfloat> C++ <cstdlib> C++ <numbers> C++ OpenCV
(追記) (追記ここまで)

C++ 教程

[画像:cpp-mini-logo]

C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。

本教程通过通俗易懂的语言来讲解 C++ 编程语言。

现在开始学习 C++ 编程!

C++ 在线工具

谁适合阅读本教程?

本教程是专门为初学者打造的,帮助他们理解与 C++ 编程语言相关的基础到高级的概念。

阅读本教程前,您需要了解的知识:

在您开始练习本教程中所给出的各种实例之前,您需要对计算机程序和计算机程序设计语言有基本的了解。

编译/执行 C++ 程序

实例

#include<iostream>usingnamespacestd; intmain(){cout << "Hello, world!" << endl; return0; }

运行实例 »

你可以用 "\n" 代替以上代码里的 endl

实例

#include<iostream>usingnamespacestd; intmain(){cout << "Hello, world!" << "\n"; return0; }
AI 思考中...

12 篇笔记 写笔记

  1. #0

    KgdBukn

    kgd***[email protected]

    1970

    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'。

    KgdBukn

    KgdBukn

    kgd***[email protected]

    9年前 (2018年01月27日)
  2. #0

    刘振豪

    310***[email protected]

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

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

    .cpp 存放函数体。

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

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

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

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

    刘振豪

    310***[email protected]

    8年前 (2018年05月30日)
  3. #0

    罗班克

    140***[email protected]

    596

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

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

    罗班克

    罗班克

    140***[email protected]

    8年前 (2018年07月03日)
  4. #0

    星铭 cainiao

    wan***[email protected]

    501

    "\n" 表示一个字符串,只有一个数据是回车符。

    '\n' 表示一个字符。

    这两个在输出上是一样的!

    关于 endl:

    1、在 C++ 中,终端输出换行时,用 cout<<......<<endl 与 "\n" 都可以,这是初级的认识。但二者有小小的区别,用 endl 时会刷新缓冲区,使得栈中的东西刷新一次,但用 "\n" 不会刷新,它只会换行,盏内数据没有变化。但一般情况,二者的这点区别是很小的,在大的程序中可能会用到。建议用 endl 来换行。

    2、endl 除了写 '\n' 进外,还调用 flush 函数,刷新缓冲区,把缓冲区里的数据写入文件或屏幕.考虑效率就用 '\n'。

    3、cout *lt;< endl; 除了往输出流中插入一个 '\n' 还有刷新输出流的作用。

    cout << endl; 
    等价于: 
    \cout << '\n' << flush;

    在没有必要刷新输出流的时候应尽量使用 cout << '\n', 过多的 endl 是影响程序执行效率低下的因素之一。

    星铭 cainiao

    wan***[email protected]

    8年前 (2018年08月27日)
  5. #0

    lici

    224***[email protected]

    510

    如果想显示多行文本,如下:

    #include <iostream>
    using namespace std;
    int main()
    {
     cout<<"...............\n"
     <<"Hello, world!\n"
     <<"Welcome to c++\n"
     <<"...............\n";
     return 0;
    }

    不用一直这样 cout 多行插入。

    lici

    224***[email protected]

    8年前 (2018年09月07日)
  6. #0

    逗神大人

    oyo***[email protected]

    643

    真正的开发过程中, 尽量避免使用 using namespace std; 等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std 中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:

    std::cout << "Hello World" << std::endl;

    等直接由命名空间组合起来的全称。

    逗神大人

    oyo***[email protected]

    8年前 (2018年09月11日)
  7. #0

    PtaQ

    992***[email protected]

    370
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    int main()
    {
     cout<<"Hello World "<<endl;
     system("pause");
     return 0;
    }

    包含头文件 stdlib.h,并在主程序中加入 system("pause"); 可以在程序运行完以后使黑框暂停显示,等待输入,而不是闪退。

    PtaQ

    992***[email protected]

    8年前 (2018年09月26日)
  8. #0

    乐山大佛

    law***[email protected]

    309

    cout 流速度较慢,如果速度过慢可以用 <stdio.h> 库中的 printf() 格式化输出函数,不需要 using namespace std;

    它的格式为:

    int __cdecl printf(const char * __restrict__ _Format,...);

    程序实例:

    #include <stdio.h>
    int main()
    {
     printf("Hello World!\n");
     return 0;
    }

    注意:printf() 中不能使用 endl!

    乐山大佛

    law***[email protected]

    8年前 (2019年02月07日)
  9. #0

    羊羊

    hny***163.com

    431

    C++ 中 using namespace std 到底是什么意思?

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

    using namespace xx;
    using namespace yy;

    xx::ayy::a 虽然都叫 a,但是不是同一个变量。

    std 是系统标准的命名空间,为了和用户定义的名字不重复,所以它声明在 std 这个命名空间中。另外,这个空间也像一个大包一样,包括了系统所有的支持。

    羊羊

    羊羊

    hny***163.com

    7年前 (2019年09月05日)
  10. #0

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

    一、作用域符号:

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

    例如:A,B 表示两个类,在 A,B 中都有成员 member。

    那么:

    • 1、A::member就表示类A中的成员member。
    • 2、B::member就表示类B中的成员member。

    二、全局作用域符号:

    全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用 :: 来区分,例如:

    char zhou; //全局变量
    void sleep()
    {
     char zhou; //全局变量
     char(局部变量) = char(局部变量)*char(局部变量);
     ::char(全局变量) =::(全局变量) *char(全局变量)
    }

    三、作用域分解运算符:

    :: 是 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。
    7年前 (2019年09月16日)
  11. #0

    tdl

    tdl***[email protected]

    338

    1、.cpp 文件和 .h 文件的区别:

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

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

    2、include 头文件时 <>"" 的区别:

    <>:会先去系统目录中找头文件,如果没有找到再去当前目录下寻找,像是标准的头文件,如 stdio.h,stdlib.h 使用这个方法。

    "":会先在当前目录下寻找,如果找不到再去系统目录下寻找,适用于自己定义的头文件

    3、using namespace std; 这行代码的作用:

    声明一个命名空间,在多人合作时,即使有函数同名了,但是因为所在的命名空间不同,也不会导致出现错误。

    std 是系统标准的命名空间。

    tdl

    tdl***[email protected]

    6年前 (2020年08月12日)
  12. #0

    嚣张

    123***[email protected]

    176

    为什么要使用 using namespace std;

    让我们来逐词理解:

    • using:引用
    • namespace:命名空间(名字空间)
    • std:标准(standard,一个命名空间的名字,cout、endl等都依靠这个命名空间)

    所以没有这行代码会发生什么呢

    #include <iostream>
    // using namespace std;
    int main()
    {
     cout << "Hello, world!" << endl;
     return 0;
    }//error

    那我们该怎样写呢?

    #include <iostream>
    // using namespace std;
    int main()
    {
     std::cout << "Hello, world!" << std::endl;
     return 0;
    }

    可以看到,加了 std:: 后就可以了

    嚣张

    123***[email protected]

    4年前 (2022年12月04日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /