• C++总结1


    直接上代码:

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

    你可以用 “ ” 代替以上代码里的 endl。
    运行结果如下:

    Hello, world!

    拓展知识点:

    1.C++中 “ ” 与 endl 的区别是什么?
    “ ” 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 “ ” 类似,但可能略有区别。std::endl 输出一个换行符,并立即刷新缓冲区。
    例如:
    std::cout << std::endl;
    相当于:

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

    由于流操作符 << 的重载,对于 ‘ ’ 和 “ ”,输出效果相同。对于有输出缓冲的流(例如cout、clog),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout 来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl 代替 ‘ ’ 一般是个好习惯。对于无缓冲的流(例如标准错误输出流cerr),刷新是不必要的,可以直接使用 ‘ ’。
    2.在 C++ 中,分别使用.h 和.cpp 来定义一个类。
    .h 中存放类的声明,函数原型(放在类的声明中)。
    .cpp 存放函数体。
    也就是说,一个存放声明(declaration),一个存放定义(definition)。
    如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 cpp 中需要 include 这个头文件。
    同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 cpp 中需要 include 这个头文件。
    对于类的设计者来说,头文件就像他们和类的使用者的一个合同,编译器会强化这一合同,它会要求你在使用这些类里的函数或结构时必须要声明。
    3.<>和""有什么区别吗?
    <> 先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h 等用这个方法。
    " " 首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的。
    4. 尽量避免使用 using namespace std; 等直接引入整个命名空间
    真正的开发过程中, 尽量避免使用 using namespace std; 等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std 中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
    std::cout << “Hello World” << std::endl;等直接由命名空间组合起来的全称。
    5.C++ 中 using namespace std 到底是什么意思?
    声明一个命名空间的意思。命名空间在多人合作的时候很有用,因为你定义了变量 a,别人也定义了变量 a,这样就重复定义了。如果你在自己的命名空间中定义了 a,别人在别人的命名空间中定义了 a,这样就不重复了,比如:

    using namespace xx;
    using namespace yy;

    xx::a 和 yy::a 虽然都叫 a,但是不是同一个变量。
    std 是系统标准的命名空间,为了和用户定义的名字不重复,所以它声明在 std 这个命名空间中。另外,这个空间也像一个大包一样,包括了系统所有的支持。
    6.:: 在 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。
    别废话,拿你代码给我看。
  • 相关阅读:
    栈的使用
    学习
    JS中常用的工具类
    AOP的相关概念
    Git-用git同步代码
    权限管理3-整合Spring Security
    权限管理2-开发权限管理接口
    权限管理1-需求描述
    使用Canal作为mysql的数据同步工具
    使用存储过程在mysql中批量插入数据
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707491.html
Copyright © 2020-2023  润新知