前言

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

  1. //java
  2. Biumall biumall_1; //只是定义变量
  3. biumall_1 = new Biumall(); // 此时才初始化
  4. Biumall biumall_2 = new Biumall(101);
复制

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

  1. //C++
  2. Biumall biumall_1; //定义并且初始化,调用了Biumall()
  3. Biumall biumall_2(101); // 调用了Biumall(int age)
复制

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

正文

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

  1. 默认构造函数

  2. 带参数的构造函数

  3. 拷贝构造函数

下面分别简单记录一下。

默认构造函数

  1. class Biumall {
  2. public: //必须,C++默认为private
  3.   Biumall() {
  4.       std::cout << "Biumall()--->biumall.com\n";
  5.   }
  6. };
复制

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

  1. int main()
  2. {
  3. //初始化无参构造函数
  4.   Biumall biumall;
  5. }
复制

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

  1. Biumall biumall;
复制

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

带参数的构造函数

  1. class Biumall {
  2. public:
  3.   Biumall(int age) {
  4.       std::cout << "Biumall(age)--->biumall.com age : "<< age <<std::endl;
  5.   }
  6. };
复制
  1. int main()
  2. {
  3.   Biumall biumall(5);
  4. }
复制

拷贝构造函数

  1. class Biumall {
  2. private:
  3.   int age;
  4. public:
  5.   Biumall() {
  6.       age = 5;
  7.       std::cout << "Biumall()--->biumall.com "<< std::endl;
  8.   }
  9.   Biumall(const Biumall& biumall) {
  10.       age = biumall.age;
  11.       std::cout << "Biumall(const Biumall& biumall)--->biumall.com " << age << std::endl;
  12.   }
  13. };
复制
  1. int main()
  2. {
  3.   Biumall biumall1;
  4.   Biumall biumall2 = biumall1;
  5. }
复制
  • 拷贝构造函数用于通过一个已存在的对象来初始化一个新对象。

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

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

参考文章

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

相关文章

暂无评论

none
暂无评论...