前言

习惯了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
暂无评论...