zoukankan      html  css  js  c++  java
  • C++ 入门简要笔记

    1. 要使用库必须要先:

    #include 库

     比如 #include <iostream>

            #include <cstring>

            #include <cmath>

     注意:这里后面没有分号";", 因为这里使用的是指令,系统库有对应的尖括号的文件,所以可以用尖括号

    要使用自定义的库,也需要include进来,这里用引号,并且是文件全名

    比如 #include "MyLib.h"

    2. 使用其他库中的某一个函数或者变量要先

    using 命名空间::函数

    或者

    using 命名空间::变量

     比如 using std::cout;

            using std::strcpy;

     注意:后面带分号";",因为是要执行的语句,而且即使是最普通的cout也需要using,这个和C#, Java不一样

     为了简便起见,一般使用

    using namespace std;

     就可以使用已经#include了的std namespace下面的内容,除去不必要的书写很多using的麻烦

    3. 基本类型转换 使用函数 static_cast<type>()

    转换后的类型变量 = static_cast< 要转换的类型 >( 被转换的变量 );

     比如 double result = static_cast< double >( original );

     4. 接口可以实现可以分开写,也就是可以把定义都写在.h文件里,实现写在.cpp中

     不过.h文件也可以有实现,但是容易发生冲突,也不容易扩展

     在.h中定义的只是方法的原型,并且可以指名访问修饰符,public, private等

    一个修饰符下面可以有若干个均使用此修饰符的定义

    代码
    // IntSet.h
    class IntSet
    {
    public:
        IntSet(
    void);
        
    void insert(int);
        
    bool IsEqual(IntSet);
        IntSet union2(IntSet, IntSet);
        IntSet incorporate2(IntSet, IntSet);
        
    void print();

        
    int get(int);
        
    int getSize();

    private:
        
    const static int ORIGINAL_SIZE = 16;
        
    int size;
        
    int counter; //elements number
        int *elements; //elements

        
    void moveArray(int *intint);
        
    void copyArray(int *int *intint);    
    };


     5. 给头文件中定义的变量赋值 只能为const常数 或者只声明不赋值

    比如 const static int ORIGINAL_SIZE = 16;
           int size;

    在实现的文件中不受此限(即全局变量或者局部变量)

    可以 int size = 16;

    6.  在类中声明的变量是类专属的,称为"类成员变量",一般在.h的class中

    在.cpp 文件中所有函数外声明的变量称为"全局变量",是文件访问级别的.

    也就是说 全局变量在一个文件中定义,就可以在所有文件中使用.

    这个是要十分小心的,因为实例化了很多相同类之后,每个实例使用这个全局变量都是同一个,而不是"隔离"的

    如果想要每个实例都有自己的一个拷贝,那么就要定义在class中,声明类成员变量

    7.  想要使用随机数可以使用如下方法

           #include <cstdlib> // contains function prototype for rand 

           using std::rand;

       则 rand() % 6 可以得到0 - 5的随机数

     注意:这里得到的伪随机数顺序是固定不变的,因为使用了相同的种子(seed),为了测试才这样设计,默认种子为1

     若要得到相对比较随机的数,可以在此之前使用 srand(time(0)); 或者 srand(time(NULL));得到随机的种子,由此得到随机的数

     8. 声明函数的时候无参数,可以不写,也可以写void明确指出

    比如 void myFunction(void)

     声明函数的时候还可以为参数指定默认值

    比如 void myFunction(int length = 1, int width = 1, int height = 1)

    这样在调用函数 myFunction(1, 2) 的时候height的默认值就会赋为 1

    注意:当函数有多个参数的时候,可以只传入前面的几个参数,后面的可以省略,不会编译出错,这和Java和C#不同

    9. 用如下方式声明的 char *s1 = "Hello World!"; 中的单个字符是不可修改的

    因为它指向的是字符串字面量(String Literal),是静态对象.

     想要声明一个可以修改单字符的指针可以使用如下方法,将它分配到堆上.

    char *p = malloc(sizeof("Hello World!"));
    strcpy(p,
    "Hello World!");

    //或者也可以用非ANSI C的库函数
    char *p = strdup("Hello World!");


    10.  注意string定义在<string>中

     要想打印出string

     比如 string str1 = "Hello World!";

            cout << str1;

     则要使用 #include <string> 否则会提示没有重载 << ,编译不通过

  • 相关阅读:
    Spring----->projects----->Spring IO Platform(也即spring的BOM:Bill Of Materials)
    可添加功能-----机器学习管理平台
    Maven--->学习心得--->maven的Dependency Mechanism(依赖关系机制)
    Maven--->使用实例
    Maven--->学习心得--->maven的相关配置---->概述 以及 相关配置实例
    Maven--->学习心得--->maven的配置文件settings.xml
    netty学习记录(实例)
    netty学习记录
    打开CKeditor默认本地上传
    Spring Security 报There is no PasswordEncoder mapped for the id "null"
  • 原文地址:https://www.cnblogs.com/zdjray/p/1698302.html
Copyright © 2011-2022 走看看