c++类定义

一、类的基本定义和使用

类是c++中一种自定义的数据类型,可以用来封装数据和方法。类由成员变量和成员函数组成。以下是一个简单的类定义:

class Person {
public:
    string name;
    int age;
    void printInfo() {
        cout << "name:" << name << ", age:" << age << endl;
    }
};

在上面的代码中,我们定义了一个Person类,它有两个成员变量(name和age)和一个成员函数(printInfo)。成员变量和成员函数可以使用public、protected、private关键字进行访问控制。

使用该类也很简单:

//创建对象
Person p;
//给成员变量赋值
p.name = "Bob";
p.age = 20;
//调用成员函数
p.printInfo();

输出结果为:name:Bob, age:20。

二、构造函数和析构函数

构造函数和析构函数是类中非常重要的概念。构造函数用于对象的初始化,而析构函数用于对象的销毁。

以下是一个简单的构造函数和析构函数的定义:

class Person {
public:
    string name;
    int age;
    //构造函数
    Person(string n, int a) {
        name = n;
        age = a;
        cout << "Constructor is called!" << endl;
    }
    //析构函数
    ~Person() {
        cout << "Destructor is called!" << endl;
    }
    void printInfo() {
        cout << "name:" << name << ", age:" << age << endl;
    }
};

在上面的代码中,我们定义了一个带参数的构造函数和一个析构函数。我们创建对象时,将自动调用构造函数进行初始化,销毁对象时将自动调用析构函数。

使用该类也很简单:

//创建对象
Person p("Bob", 20);
//调用成员函数
p.printInfo();

输出结果为:Constructor is called!
name:Bob, age:20
Destructor is called!

三、访问控制

c++中有三种访问控制权限:public、protected和private。public表示该成员可以被类的外部访问,protected表示该成员可以被类的子类访问,private表示该成员只能在类的内部访问。

以下是一个具体的例子:

class Person {
public:
    string name;
    //公有成员函数
    void setName(string n) {
        //可以访问私有成员变量
        this->name = n;
        //可以访问私有成员函数
        this->setAge(20);
    }
protected:
    int age;
    //受保护的成员函数
    void setAge(int a) {
        //只能在类内部访问私有成员变量
        this->age = a;
    }
private:
    string gender;
};

在上面的代码中,我们定义了一个Person类,它有一个public成员函数(setName)、一个protected成员变量(age)和一个private成员变量(gender)。在public成员函数中,我们可以访问私有成员变量和私有成员函数,而在类的外部同样可以访问该函数。

四、继承和多态

继承是面向对象程序设计中的一个重要概念。它可以帮助我们实现代码的复用。子类可以继承父类的成员变量和成员函数,并且还可以扩展自己的新的成员变量和成员函数。

以下是一个简单的继承的例子:

class Student : public Person {
public:
    int studentId;
    //子类的构造函数
    Student(string n, int a, int id) : Person(n, a) {
        studentId = id;
    }
    //子类的成员函数
    void printStudentInfo() {
        cout << "name:" << name << ", age:" << age << ", studentId:" << studentId << endl;
    }
};

在上面的代码中,我们定义了一个Student类,它继承了Person类的成员变量和成员函数,同时还有自己的成员变量(studentId)和成员函数(printStudentInfo)。

使用该类也很简单:

//创建对象
Student s("Amy", 18, 20210001);
//调用成员函数
s.printStudentInfo();

输出结果为:name:Amy, age:18, studentId:20210001。

多态是面向对象程序设计中的另一个重要概念。它允许我们按照统一的接口而非具体的实现来调用对象。c++中实现多态有两种方式:虚函数和纯虚函数。

以下是一个简单的虚函数的例子:

class Shape {
public:
    //虚函数
    virtual double getArea() {
        return 0;
    }
};
class Triangle : public Shape {
public:
    int base;
    int height;
    Triangle(int b, int h) {
        base = b;
        height = h; 
    }
    //重写虚函数
    double getArea() {
        return 0.5*base*height;
    }
};
class Square : public Shape {
public:
    int side;
    Square(int s) {
        side = s;
    }
    //重写虚函数
    double getArea() {
        return side*side;
    }
};

在上面的代码中,我们定义了一个抽象类Shape,它有一个虚函数(getArea)。我们继承Shape,实现了具体的图形类Triangle和Square。这些具体的类重写了抽象类Shape中的虚函数。

使用该类也很简单:

//创建对象
Shape *s1 = new Triangle(10, 5);
Shape *s2 = new Square(8);
//调用虚函数
cout << "Triangle area is: " <getArea() << endl;
cout << "Square area is: " <getArea() << endl;

输出结果为:Triangle area is: 25,Square area is: 64。

五、模板类

c++中的模板类可以帮助我们快速实现通用类。模板类是一种特殊的类,它可以使用一个或多个类型作为参数。

以下是一个简单的模板类的定义:

template 
class Stack {
private:
    T *data;
    int topIndex;
    int size;
public:
    //构造函数
    Stack(int s) {
        data = new T[s];
        topIndex = -1;
        size = s;
    }
    //析构函数
    ~Stack() {
        delete[] data;
    }
    //压栈函数
    void push(T d) {
        if (topIndex = 0) {
            return data[topIndex--];
        }
        return NULL;
    }
};

在上面的代码中,我们定义了一个模板类Stack,它有一个类型参数T。该类有两个成员变量(data和topIndex)和两个成员函数(push和pop)。成员函数可以使用T类型作为参数和返回值。

使用该类也很简单:

//创建Stack对象
Stack s(100);
//压栈
s.push(10);
s.push(20);
//弹栈
cout << s.pop() << endl;
cout << s.pop() << endl;

输出结果为:20,10。

原创文章,作者:HQGXJ,如若转载,请注明出处:https://www.506064.com/n/331781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HQGXJHQGXJ
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:11

相关推荐

  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python中的队列定义

    本篇文章旨在深入阐述Python中队列的定义及其应用,包括队列的定义、队列的类型、队列的操作以及队列的应用。同时,我们也会为您提供Python代码示例。 一、队列的定义 队列是一种…

    编程 2025-04-29
  • Python符号定义和使用方法

    本文将从多个方面介绍Python符号的定义和使用方法,涉及注释、变量、运算符、条件语句和循环等多个方面。 一、注释 1、单行注释 # 这是一条单行注释 2、多行注释 “”” 这是一…

    编程 2025-04-29
  • Python编程技巧:如何定义一个函数n!,并计算5!

    在这篇文章中,我们将研究如何使用Python编程语言定义一个能够计算阶乘的函数,并且演示如何使用该函数计算5!。 一、阶乘函数的定义 在Python中,我们可以使用一个简单的递归函…

    编程 2025-04-29
  • Python定义两个列表的多面探索

    Python是一种强大的编程语言,开放源代码,易于学习和使用。通过Python语言,我们可以定义各种数据类型,如列表(list)。在Python中,列表(list)在处理数据方面起…

    编程 2025-04-29
  • Python定义变量

    Python是一门高级编程语言,变量是Python编程中非常重要的一个概念。Python的变量定义方式非常简单,可以在程序中随时定义一个变量来存储数据,这方便了整个程序的逻辑编写,…

    编程 2025-04-28
  • Python中如何定义一个变量

    Python是一种高级编程语言,使用它您可以轻松地定义和操作变量。Python中的变量属于动态类型变量,因此不需要在定义变量时指定其类型,而是在变量分配之前自动确定变量的数据类型。…

    编程 2025-04-28
  • Python编程:如何定义一个计算三角形面积的函数

    计算三角形面积是几何学中的一个基础问题。在Python编程中,我们可以通过定义一个函数来计算任意三角形的面积。本文将从以下几个方面对Python定义一个计算三角形面积的函数进行阐述…

    编程 2025-04-28
  • Python定义函数需要声明参数类型吗?

    在Python中,函数定义时不需要声明参数类型。这意味着,您可以将任何类型的值作为函数参数传递,而不必担心数据类型是否匹配。 一、Python函数参数类型的灵活性 Python函数…

    编程 2025-04-28

发表回复

登录后才能评论