21xrx.com
2025-06-26 20:42:17 Thursday
文章检索 我的文章 写文章
C++构造函数的定义
2023-07-10 14:19:46 深夜i     13     0
C++ 构造函数 定义

C++是一门面向对象的编程语言,它支持类和对象的封装,继承和多态等面向对象特性。在类的定义中,构造函数是非常重要的一部分,因为它被用来初始化类的对象。本文将介绍C++构造函数的定义以及其在类中的作用。

C++ 构造函数的定义

C++构造函数是一个特殊的成员函数,它的名称与类的名称相同,不带任何返回值类型。构造函数在对象创建时自动调用,并负责初始化对象的数据成员,为其分配内存空间并设置初始值。

在C++中,构造函数可以有以下几种不同的定义方式:

1. 默认构造函数

默认构造函数是C++类中的一种特殊构造函数,它没有任何参数,也不执行任何操作。当对象被创建时,如果程序员没有为对象指定初始化值,那么将自动调用类的默认构造函数进行初始化。如下面代码所示:

class MyClass{
public:
  MyClass()
    std::cout<<"Default Constructor"<<std::endl;
  
};
int main()
  MyClass obj;
  return 0;

输出结果是 “Default Constructor”,即调用了默认构造函数。

2. 参数化构造函数

参数化构造函数是一种特殊的构造函数,它为类提供了一种以特定方式初始化对象的方法。参数化构造函数带有一些参数,这些参数用于为对象的数据成员设置初始值。如:

class Person{
  public:
    Person(const char* name,int age)
      this->name=name;
      this->age=age;
    
    const char* name;
    int age;
};
int main(){
  Person p1("Tom",25);
  std::cout<<p1.name<<" "<<p1.age<<std::endl;
  return 0;
}

输出结果是:“Tom 25”。

3. 拷贝构造函数

拷贝构造函数在对象复制时被自动调用。这个构造函数复制另一个同类型对象的数据成员到当前对象中,它有一个单一参数,这个参数是同类型的引用变量。如下面代码所示:

class MyString{
  private:
    char* str;
  public:
    MyString()
      str=nullptr;
    
    MyString(const char* s){
      str=new char[strlen(s)+1];
      strcpy(str,s);
    }
    MyString(const MyString& s){
      str=new char[strlen(s.str)+1];
      strcpy(str,s.str);
    }
};
int main(){
  MyString s1("Hello World!");
  MyString s2(s1);
  return 0;
}

在代码中“s1”是通过参数化构造函数初始化的,这个构造函数分配内存空间,在堆中创建字符串对象。调用拷贝构造函数时,会复制“s1”的数据成员到“s2”中,两个对象拥有相同的字符串,但是它们在内存中占用独立的空间。

总结

构造函数是C++中一个非常重要的概念。它们在对象的构造和初始化阶段发挥了重要作用。默认生成的构造函数在类的实例化时自动被调用,而自己定义的构造函数则可以通过参数化的形式提供多种不同初始化对象的方式。拷贝构造函数则为对象复制提供了便捷的方法。对于构造函数,需要程序员能够理解,并根据需要为类添加适当的构造函数,从而实现类的初始化和创建。

  
  

评论区