c++里面的知识学习:类、结构体

1、类的概念与定义。

  在C++中,类是一种用户自定义的数据类型,用于封装数据和相关的操作。它是面向对象编程的核心概念之一。类提供了一种组织数据和功能的方式,使得代码更加模块化、可重用和易于维护。

  类可以看作是一个模板或蓝图,描述了对象的属性(成员变量)和行为(成员函数)。成员变量用于存储对象的状态信息,而成员函数用于操作和访问这些状态。

类的定义通常包括以下几个部分:

  1. 成员变量(属性):类中的成员变量用于存储对象的状态信息。它们可以是任何合法的C++数据类型,包括基本类型(如整数、浮点数)和自定义类型(如其他类的对象)。成员变量可以通过访问修饰符指定其访问级别(如privatepublic等)。

  2. 构造函数:构造函数是一种特殊的成员函数,在创建对象时被调用,用于初始化对象的数据成员。它具有与类名相同的名称,没有返回类型,并可以有参数。构造函数可以定义多个重载版本,以适应不同的对象初始化需求。

  3. 析构函数:析构函数是另一种特殊的成员函数,在对象销毁时被调用,用于清理对象占用的资源。析构函数的名称与类名相同,以~为前缀,不带参数和返回类型。

  4. 成员函数(方法):成员函数是类中定义的普通函数,它们用于操作对象的状态和实现类的功能。成员函数可以访问类的私有成员变量,并且可以在类外部通过对象调用。

  5. 访问修饰符:C++中的类提供了三种访问修饰符:privatepublicprotected。这些修饰符用于控制成员变量和成员函数的访问级别。private表示只能在类内部访问,public表示可以在类内外都能访问,protected表示可以在类内及其派生类中访问。

   通过定义和使用类,可以实现面向对象编程的核心概念,如封装、继承和多态性。类的概念使得程序员可以更加模块化地组织代码,提高代码的可读性、可维护性和可重用性。

2、类的定义。

  在C++中,可以使用关键字classstruct来定义一个类。类用于封装数据和相关的操作,它是面向对象编程的基本概念。

下面是一个简单的类定义的示例:

class MyClass {
  private:
    int myInt;
    float myFloat;

  public:
    // 构造函数
    MyClass(int i, float f) {
      myInt = i;
      myFloat = f;
    }

    // 成员函数
    void printData() {
      cout << "myInt: " << myInt << endl;
      cout << "myFloat: " << myFloat << endl;
    }
};

  在上面的示例中,MyClass是一个类名,privatepublic是访问修饰符。int myIntfloat myFloat是类的私有成员变量,它们只能在类内部访问。MyClass(int i, float f)是构造函数,用于初始化对象的数据成员。printData()是一个公有成员函数,用于打印数据成员的值。

要使用这个类,可以创建类的实例并调用成员函数,如下所示:

int main() {
  MyClass obj(10, 3.14);  // 创建一个 MyClass 对象

  obj.printData();  // 调用成员函数

  return 0;
}

 以上代码将输出:

myInt: 10
myFloat: 3.14

 这只是一个简单的类定义示例,实际上,类可以包含更多的数据成员和成员函数,并且可以有更复杂的功能。

3、类的使用。

  

在C++中使用类主要涉及以下几个方面:

  1. 定义类:在代码中使用class关键字或struct关键字定义一个新的类。在类定义中,指定成员变量、构造函数、析构函数和成员函数等。

  2. 创建对象:使用类名和括号创建类的对象,并通过构造函数初始化对象的数据成员。例如,MyClass obj;MyClass obj(10, 3.14);

  3. 访问成员变量:使用成员选择运算符.来访问对象的成员变量。例如,obj.myInt = 20;

  4. 调用成员函数:使用成员选择运算符.来调用对象的成员函数。例如,obj.printData();

  5. 访问修饰符:根据需要使用适当的访问修饰符(privatepublicprotected)来限制成员变量和成员函数的访问级别。

下面是一个使用类的示例:

#include 

using namespace std;

// 定义一个类
class MyClass {
private:
    int myInt;
    float myFloat;

public:
    // 构造函数
    MyClass(int i, float f) {
        myInt = i;
        myFloat = f;
    }

    // 成员函数
    void printData() {
        cout << "myInt: " << myInt << endl;
        cout << "myFloat: " << myFloat << endl;
    }
};

int main() {
    // 创建对象
    MyClass obj(10, 3.14);

    // 访问成员变量
    obj.printData();

    // 调用成员函数
    obj.myInt = 20;

    return 0;
}

  在上面的示例中,我们首先定义了一个名为MyClass的类。然后在main()函数中,我们创建了一个MyClass的对象obj,并通过构造函数将值传递给对象的成员变量。接着,我们调用了对象的printData()成员函数来打印数据成员的值,并修改了对象的myInt成员变量。

  注意需要包含头文件以使用coutendl另外,如果在命名空间中使用了using namespace std;,则可以直接使用coutendl,否则需要使用std::coutstd::endl

  通过以上步骤,就可以定义和使用类来实现面向对象编程的各种特性和功能。

4、结构体的定义与概念

  在C++中,结构体(struct)是一种用户自定义的数据类型,用于组合多个不同类型的数据成员。它类似于类(class),但有一些区别。

  结构体可以包含多个成员变量,每个成员变量可以是任何合法的C++数据类型,包括基本类型和自定义类型。与类不同的是,默认情况下,结构体的成员变量和成员函数都是公共的(public),可以在结构体外部直接访问。

  结构体的定义使用关键字struct后跟结构体的名称和一对花括号括起来的成员列表。例如:

struct Person {
    string name;
    int age;
    float height;
};

上面的代码定义了一个名为Person的结构体,它有三个成员变量:nameageheight

结构体的使用与类的使用类似,可以创建结构体对象,并通过成员选择运算符.来访问和修改成员变量。例如:

Person p1;
p1.name = "Alice";
p1.age = 25;
p1.height = 165.5;

cout << "Name: " << p1.name << endl;
cout << "Age: " << p1.age << endl;
cout << "Height: " << p1.height << endl;

  在上面的示例中,我们创建了一个名为p1Person结构体对象,并通过成员选择运算符.来访问和修改对象的成员变量。

需要注意的是,结构体和类之间的主要区别在于默认的访问修饰符不同。结构体中的成员变量和成员函数默认是公共的,而类中的成员变量和成员函数默认是私有的(private)。

此外,结构体还可以嵌套在其他结构体、类或命名空间中,形成更复杂的数据结构。

    总结起来,结构体是一种用于组合多个不同类型的数据成员的用户自定义类型。它提供了一种组织数据的方式,使得代码更加模块化和可读性更强。结构体中的数据成员默认是公共的,可以直接访问和修改。在C++中,结构体常常用于表示一组相关的数据,而类则更多地用于实现面向对象编程的特性和功能。

你可能感兴趣的:(c++,学习)