21xrx.com
2024-09-20 00:21:18 Friday
登录
文章检索 我的文章 写文章
C++对象的初值赋值方法详解
2023-07-02 07:44:03 深夜i     --     --
C++ 对象 初值 赋值 方法

C++中对象的初值赋值方法有很多,下面来详细介绍一下。

1. 默认构造函数

当我们没有显式地定义构造函数时,编译器会自动生成一个默认构造函数。该构造函数没有参数,用于初始化对象的成员变量。当我们创建对象时,如果不提供初值,就会调用默认构造函数。

2. 带参数的构造函数

带参数的构造函数可以在创建对象时,提供初值并进行赋值。该构造函数可以有任意数量和类型的参数,可以用来初始化对象的成员变量。

例如:


class Person {

private:

  string name;

  int age;

public:

  Person(string n, int a)

    name = n;

    age = a;

  

};

以上代码定义了一个带有两个参数的构造函数,用于初始化对象的成员变量name和age。

3. 列表初始化

通过花括号{}为对象进行列表初始化是一种比较方便的方法。对于没有定义构造函数的类,就可以使用列表初始化来进行初值赋值。对于有构造函数的类,列表初始化称为聚合初始化,用于初始化类中的成员变量。

例如:


class Point

public:

  int x;

  int y;

;

Point p = 1;

上面的代码使用列表初始化给p对象的成员变量x和y赋初值。

4. 拷贝构造函数

拷贝构造函数用于将已经存在的对象完全复制到另一个对象中。当我们传递对象作为函数参数,并返回该对象时,就会使用拷贝构造函数。该构造函数可以用在对象初始化时,将一个对象的值完全复制到新对象中。

例如:


class Circle {

private:

  double radius;

public:

  Circle(const Circle& c)

    radius = c.radius;

  

};

Circle c1(1.0);

Circle c2(c1);  //使用拷贝构造函数赋值给c2

5. 赋值运算符重载

赋值运算符重载可以用于将一个对象的值复制到另一个对象中。我们可以自定义一个赋值运算符,用于自定义类的对象赋初值。

例如:


class Student {

private:

  char* name;

  int age;

public:

  Student& operator=(const Student& s) {

    if (this != &s) {

      delete[] name;

      name = new char[strlen(s.name) + 1];

      strcpy_s(name, strlen(s.name) + 1, s.name);

      age = s.age;

    }

    return *this;

  }

};

Student s1 = {"Jack", 18};

Student s2;

s2 = s1;  //使用赋值运算符将s1的值赋给s2

以上是C++对象的初值赋值方法的详细介绍,对于初学者来说,要熟练掌握这些方法并合理运用,在使用C++编程时可以更加得心应手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复