美文网首页
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