前言

习惯了Java的类创建对象的写法,需要new之后才算真正初始化。

//java
Biumall biumall_1; //只是定义变量
biumall_1 = new Biumall(); // 此时才初始化
Biumall biumall_2 = new Biumall(101);

C++代码偶尔会有点不适应,尤其是初始化对象时

//C++
Biumall biumall_1;  //定义并且初始化,调用了Biumall()
Biumall biumall_2(101); // 调用了Biumall(int age) 

本文只是简单记录一下C++初始化类对象,主要是方便自己查阅和回顾。

正文

C++中类初始化对象主要有如下几种。

  1. 默认构造函数

  2. 带参数的构造函数

  3. 拷贝构造函数

下面分别简单记录一下。

默认构造函数

class Biumall {
public: //必须,C++默认为private
    Biumall() {
        std::cout << "Biumall()--->biumall.com\n";
    }
};

没带参数也可以不用显示定义构造函数,编译器默认会生成一个,因此上面写法跟下面一样。

int main()
{
    //初始化无参构造函数
    Biumall biumall;
}

C++中,初始化对象,只需要

Biumall biumall;

就会调用默认的构造函数或者无参构造函数。

带参数的构造函数

class Biumall {
public:
    Biumall(int age) {
        std::cout << "Biumall(age)--->biumall.com age : "<< age <<std::endl;
    }
};
int main()
{
    Biumall biumall(5);
}

拷贝构造函数

class Biumall {
private:
    int age;
public:
    Biumall() {
        age = 5;
        std::cout << "Biumall()--->biumall.com  "<< std::endl;
    }

    Biumall(const Biumall& biumall) {
        age = biumall.age;
        std::cout << "Biumall(const Biumall& biumall)--->biumall.com  " << age << std::endl;
    }
};
int main()
{
    Biumall biumall1;
    Biumall biumall2 = biumall1;
}
  • 拷贝构造函数用于通过一个已存在的对象来初始化一个新对象。

  • 当使用等号“=”初始化一个对象,且等号右侧是一个同类型的对象时,会调用拷贝构造函数。

  • 拷贝构造函数通常具有一个指向同类型对象的常量引用参数。

参考文章

  1. 问心快码:c++类初始化对象的三种方式

相关文章

暂无评论

none
暂无评论...