跳转到内容

C++ 类声明

来自代码酷

C++类声明[编辑 | 编辑源代码]

类声明是C++面向对象编程的核心概念之一,它定义了对象的蓝图,包括数据成员(属性)和成员函数(方法)。类是C++中实现封装、继承和多态的基础结构。

基本语法[编辑 | 编辑源代码]

C++中使用class关键字声明类,基本语法结构如下:

class ClassName {
    access_specifier:
        // 成员变量(属性)
        data_type member_variable;
        
        // 成员函数(方法)
        return_type member_function(parameters);
};

其中:

  • access_specifier可以是publicprivateprotected
  • 类声明以分号;结束

访问修饰符[编辑 | 编辑源代码]

classDiagram class AccessSpecifiers { +public -private #protected }

  • public:在任何地方都可以访问
  • private:只能在类内部访问(默认)
  • protected:类内部和派生类中可以访问

示例代码[编辑 | 编辑源代码]

下面是一个简单的Rectangle类声明示例:

#include <iostream>
using namespace std;

class Rectangle {
private:
    double length;
    double width;

public:
    // 成员函数声明
    void setDimensions(double l, double w);
    double calculateArea();
    void display();
};

// 成员函数定义
void Rectangle::setDimensions(double l, double w) {
    length = l;
    width = w;
}

double Rectangle::calculateArea() {
    return length * width;
}

void Rectangle::display() {
    cout << "Rectangle with length: " << length 
         << ", width: " << width 
         << ", area: " << calculateArea() << endl;
}

int main() {
    Rectangle rect;
    rect.setDimensions(5.0, 3.0);
    rect.display();
    return 0;
}

输出:

Rectangle with length: 5, width: 3, area: 15

类声明与定义[编辑 | 编辑源代码]

C++中类声明可以分开为两部分: 1. 声明(头文件中):描述类的结构 2. 定义(源文件中):实现成员函数

头文件示例[编辑 | 编辑源代码]

// rectangle.h
#ifndef RECTANGLE_H
#define RECTANGLE_H

class Rectangle {
private:
    double length;
    double width;

public:
    void setDimensions(double l, double w);
    double calculateArea();
    void display();
};

#endif

源文件示例[编辑 | 编辑源代码]

// rectangle.cpp
#include "rectangle.h"
#include <iostream>

void Rectangle::setDimensions(double l, double w) { /* 实现 */ }
double Rectangle::calculateArea() { /* 实现 */ }
void Rectangle::display() { /* 实现 */ }

实际应用案例[编辑 | 编辑源代码]

考虑一个银行账户管理系统,我们可以声明一个BankAccount类:

class BankAccount {
private:
    string accountNumber;
    string accountHolder;
    double balance;

public:
    BankAccount(string num, string holder, double initial);
    void deposit(double amount);
    bool withdraw(double amount);
    void displayBalance();
    string getAccountInfo();
};

高级特性[编辑 | 编辑源代码]

内联函数[编辑 | 编辑源代码]

类声明中定义的函数默认为内联函数:

class Circle {
private:
    double radius;
public:
    double getRadius() const { return radius; }  // 内联函数
};

静态成员[编辑 | 编辑源代码]

使用static关键字声明类级别的成员:

class Counter {
private:
    static int count;  // 静态成员变量
public:
    Counter() { count++; }
    static int getCount() { return count; }  // 静态成员函数
};

类与结构体的区别[编辑 | 编辑源代码]

特性 class struct
默认访问权限 private public
继承默认访问权限 private public
用途 面向对象设计 数据聚合

数学表示[编辑 | 编辑源代码]

类可以形式化表示为: C=(D,M) 其中:

  • D是数据成员的集合
  • M是成员函数的集合

最佳实践[编辑 | 编辑源代码]

1. 使用有意义的类名(名词或名词短语) 2. 遵循单一职责原则 3. 数据成员通常设为private 4. 成员函数按功能分组 5. 考虑使用const成员函数 6. 大型类考虑使用头文件和源文件分离

常见错误[编辑 | 编辑源代码]

  • 忘记类声明末尾的分号
  • 混淆类声明和类实例化
  • 访问private成员而不通过public接口
  • 循环包含头文件

总结[编辑 | 编辑源代码]

C++类声明是构建面向对象程序的基础,它封装了数据和行为,提供了访问控制机制。理解类声明的各个方面对于编写可维护、可扩展的C++代码至关重要。