21xrx.com
2025-04-13 10:30:52 Sunday
文章检索 我的文章 写文章
C++构造函数格式详解
2023-07-05 15:11:46 深夜i     5     0
C++ 构造函数 格式 详解 OOP(面向对象编程)

在C++编程中,构造函数是一种特殊的函数,它在对象创建时自动调用来初始化对象的成员变量,为对象分配内存空间,执行任何必要的操作,并返回指向该对象的指针。本篇文章将详细介绍C++构造函数的格式和使用方法。

C++构造函数的格式

C++构造函数是与类同名的函数,并以类名作为函数名。构造函数的格式如下:

ClassName::ClassName(parameters)
  // 代码块

其中,ClassName是类的名称,parameters是传递给构造函数的参数列表。构造函数可以有零个或多个参数,如果没有参数,则参数列表为空。

C++构造函数的类型

C++构造函数分为以下几种类型:

1. 默认构造函数

默认构造函数是没有任何参数的构造函数。如果类中没有定义构造函数,则编译器会自动生成默认构造函数。

2. 参数化构造函数

参数化构造函数是带有参数的构造函数,它需要根据传递的参数来初始化对象的成员变量。参数化构造函数可以有一个或多个参数。

3. 拷贝构造函数

拷贝构造函数用于创建一个新的对象作为传递给它的对象的副本。它需要一个对象作为参数,并将其成员变量值复制到新对象中。拷贝构造函数的参数类型是常量引用对象。

C++构造函数的重载

C++构造函数可以像普通函数一样进行重载。重载构造函数可以分别使用不同的参数列表来初始化对象的成员变量。例如:

class Test
{
public:
  Test(); 
  Test(int x);
};
Test::Test()
  cout << "调用无参构造函数" << endl;
Test::Test(int x)
  cout << "调用有参构造函数" << endl;
int main() {
  Test t; // 调用无参构造函数
  Test t2(10); // 调用有参构造函数
  return 0;
}

C++构造函数的默认参数

C++构造函数也可以使用默认参数,类似于普通函数的默认参数。默认参数用于当调用构造函数时未提供参数时使用的值。例如:

class Test
{
public:
  Test(int x = 0, int y = 0);
};
Test::Test(int x, int y) y = " << y << endl;
int main() {
  Test t1; // x = 0,y = 0
  Test t2(10); // x = 10,y = 0
  Test t3(10, 20); // x = 10,y = 20
  return 0;
}

C++构造函数的调用顺序

多个父类或成员变量都有构造函数时,它们的调用顺序基于它们在类中的声明顺序,与构造函数在初始化列表中的声明顺序无关。例如:

class A {
public:
  A()
   cout << "A's constructor called" << endl;
 
};
class B {
public:
  B()
   cout << "B's constructor called" << endl;
 
};
class C: public A, public B {
public:
  C()
   cout << "C's constructor called" << endl;
 
};
int main()
  C c;
  return 0;

输出结果为:

A's constructor called
B's constructor called
C's constructor called

结论

C++构造函数是一种特殊的函数,它在对象创建时自动调用,用于初始化对象的成员变量,分配内存空间和执行必要的操作。构造函数的格式为 ClassName::ClassName(parameters),它包括默认构造函数、参数化构造函数和拷贝构造函数。C++构造函数可以进行重载和默认参数。同时,在多个父类或成员变量都有构造函数时,它们的调用顺序基于它们在类中的声明顺序。

  
  

评论区