C++之变量的初始化

来源:互联网 发布:淘宝可以寄到台湾吗 编辑:程序博客网 时间:2024/06/07 23:12

        C++学习笔记,其实是C++ Primer这本书的读书笔记,主要是记录在C++学习中容易犯错的地方,以及与C语言之中不太一样的地方。C++语言继承于C语言,但和C语言又有很大的不同,因此学习过程中,需要特别注意。

        C++支持两种初始化变量的形式:复制初始化和直接初始化。复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中:

        init ival(1024);  //直接初始化

        init ival = 1024;  //复制初始化

1. 内置类型的初始化

        内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体内定义的内置类型变量不进行自动初始化。

2. 类类型变量的初始化

        类通过定义一个或多个构造函数来控制类对象的初始化。定义如何进行初始化的成员函数称为构造函数。以string类为例,string类型在标准库中定义,用于存储不同长度的字符串。使用string时必须包含string头文件。和IO类型一样,string定义在std命名空间中。
        string类定义了几个构造函数,使得我们可以用不同的方式初始化string对象。其中一种方式初始化string对象的方式是作为字符串字面值的副本:
        #include<string>
        std::string titleA = "C++ Primer, 4th Ed.";
        std::string titleB("C++ Primer, 4th Ed.");
        两种定义都创建了一个string对象,其初始值都是指定的字符串字面值的副本。
        也可以通过一个计数器和一个字符初始化string对象。这样创建的对象包含重复多次的指定字符,重复次数由计数器指定:
        std::string all_nines(10, '9');
        如果定义某个类的变量时没有提供初始化式,这个类也可以定义初始化时的操作。它是通过定义一个特殊的构造函数即默认构造函数来实现的。如果变量定义没有提供初始化式,那么就会使用默认构造函数。例如string类定义了默认构造函数来初始化string变量为空字符串,即没有字符的字符串:
        std::string empty;
        有些类类型没有默认构造函数。对于这些类型来说,每个定义都必须提供显示的初始化式。


0 0
原创粉丝点击