c++备忘01

0x00 对象、类型、值

    缺省条件下,读取字符串会被空白符所终止(空格换行tab)

    类型:定义一组可能的值与一组运算(数据的表示、数据的操作)

    对象:用于保存一个指定类型的一些内存单元

    :根据某个类型来解释的内存中的bit

    变量:一个命名的对象

    声明:命名一个对象的一条语句,但是没有分配内存空间

    定义:是一个声明,同时分配内存空间

extern int a;//只是声明一个int类型变量,没有分配内存空间
int a;定义(同时也是声明)一个int类型变量,分配了空间,执行了默认初始化
void print();//一个函数的声明,没有函数体,不占空间(代码也要占空间的)
void print(){//一个函数的定义(同时也是声明),有函数体,占空间
    cout<<"hello"<<endl;
}
class A{ //这个是类的声明而不是定义,对于类里的成员函数,任然区分定义和声明
    public:
       A(){}
    private:
        int a; 
};

    对于一个变量,可以在代码中(不论是一个源文件还是多个源文件)重复声明,但是不能重复定义。因此一个头文件如果被多个源文件使用,里面就不能定义变量、函数,但是可以声明类、变量、函数

    如下,一个头文件定义函数然后被两个源文件引用后编译结果:

0x01 不安全转换

    如果转换后丢失精度,则为不安全转换,如果需要强制转换可以使用static_cast<>()