zoukankan      html  css  js  c++  java
  • 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。
    别废话,拿你代码给我看。
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707491.html
Copyright © 2011-2022 走看看