【C++】类的构造函数的基本介绍(A basic introduction to constructors of classes)

简介: 【C++】类的构造函数的基本介绍(A basic introduction to constructors of classes)

前言

本节课是对类中的函数做介绍:构造函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、构造函数

1.构造函数的产生形式及作用

1.产生:

普通数据成员不能够在类内直接赋值,因为只有对象创建的时候才分配空间。那么数据如何赋初始值呢?可以定义一个成员函数,对成员统一赋值

class a
{
public:
  int c;
  void fun(int b)
  {
    c=b;
  }
}

2.形式:

类名(参数列表){}

注意:他没有返回值

class a
{
public:
  int c;
  a(int b)
  {
    c = b;
  }
};

除了没有返回值,他基本和普通的函数一模一样了,我们可以放心大胆的用。

3.作用

对数据成员赋初始值

2.函数的调用时机

我们在创建对象时及会调用

那么我们知道,创建类可以创建栈区对象也可以创建堆区对象

1.栈区调用时机

class a
{
public:
  int c;
  a()
  {
    c = 12;
  }
};
int main()
{
  a aa;
  return 0;
}

首先 我们在main函数中创建了一个a的栈区对象 他的构造函数调用时机是当代码创建了一个a栈区对象时,他就会立马调用构造函数

2.堆区调用时机

我们知道,创建堆区对象可以使用两种方式:malloc和new。

but!使用malloc 的方式是不会调用构造函数的,但是使用new会调用类中的构造函数

class a
{
public:
  int c;
  a()
  {
    c = 12;
  }
};
int main()
{
  a* aa = new a;//不会调用构造函数
  a* aaj = (a*)malloc(sizeof(a));//不会调用构造函数
  return 0;
}


3.构造函数的类型

1.默认构造函数

什么都不做,他没有参数,代码段也没有语句,but 必须要有这个东西

如下:

class C_l
{
public:
  C_1()
  {
  }
};

注意: 只要用户声明构造函数,默认的构造函数就没有了

2.无参数构造函数

class C_l
{
public:
  C_1()
  {
    //用户可以自己写代码在这里面,创建对象时就会执行里面的语句
    cout<<"hello world"<<endl;
  }
};

3.有参数的构造函数

class C_l
{
public:
  C_l(int a)
  {
    cout << a << endl;
  }
};

在有参数的构造函数中我们要注意创建对象时的传递参数。

类名 对象(参数);

类名 *对象 = new 类名(参数);

有参数的构造函数怎么传递参数:

  //类名 对象(参数);
  //类名 *对象 = new 类名(参数);
  //1.
  C_l c_l(12);
  //2.
  C_1 *c_2 = new C_l(13);

4.多个构造函数产生重载

class C_l
{
public:
  C_l(int a)
  {
    cout << a << endl;
  }
  C_l()
  {
    cout << "a" << endl;
  }
  C_l(double c)
  {
    cout << c << endl;
  }
};

不会重载的小伙伴可以去看看我之前的C++内容

4.成员函数的定义

意义:多文件

类内声明函数

class aa
{
public:
  void fun();
}

类外定义函数:

返回值 类名作用域 函数名(){}

void aa::fun()
{
  cout<<"你好"<<endl;
}
相关文章
|
6天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
29 4
|
7天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
26 4
|
30天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
30天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4
|
30天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
16 0
|
1月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
23 3