美文网首页
C++程序设计学习笔记:2 类和对象初探 构造函数

C++程序设计学习笔记:2 类和对象初探 构造函数

作者: louyang | 来源:发表于2017-12-14 08:28 被阅读3次

    在类中有一种函数,名字与类名相同,可以有参数,但不能有返回值的函数(void也不行),即为此类的构造函数。

    构造函数的作用是初始化对象,给成员变量赋初始值。有了构造函数,我们就不必专门再写初始化函数了,也不用担心忘了调用初始化函数。

    定义一个类时,如果没有写构造函数,则C++编译器会为这个类生成一个默认的构造函数,默认构造函数无参数,不做任何操作。只要我们定义了构造函数,编译器就不会这样做了。一个类可以有多个构造函数。

    对象生成时,不论以何种形式生成,构造函数都会被调用。其后,就不能再调用构造函数了。

    例如:

    class A {
        private:
            int a, b;
        public:
            void set(int a, int b);
    };    
    //编译器自动生成构造函数
    
    A a; 
    A * p = new A;
    //以上默认构造函数被调用
    
    class A 
    {
        private:
            int a, b;
        public:
            A(int x, int y);
    };
    A::A(int x, int y)
    {
          a = x;
          b = y;
    }
    A a(1,2);
    A a[2] = {{1,2},{3,4}};
    A * p = new A[2] {{1,2},{3,4}};
    A a; //错,没有无参的构造函数
    

    一个完整的例子:

    #include <iostream>
    
    class A
    {
        private:
            int a, b;
        public:
            A(int x, int y);
            void printValue();
    };
    
    A::A(int x, int y)
    {
        a = x;
        b = y;
    }
    
    void A::printValue()
    {
        std::cout << a << ',' << b << std::endl;
    }
    
    int main()
    {
        A a(1,2);
        a.printValue();
        A * b = new A(3,4);
        b->printValue();
    }
    
    $ g++ a.cpp && ./a.out
    1,2
    3,4
    

    课程录像

    北京大学郭炜/刘家瑛老师,C++程序设计课程录像

    相关文章

      网友评论

          本文标题:C++程序设计学习笔记:2 类和对象初探 构造函数

          本文链接:https://www.haomeiwen.com/subject/sfgrixtx.html