C++ 类声明
外观
C++类声明[编辑 | 编辑源代码]
类声明是C++面向对象编程的核心概念之一,它定义了对象的蓝图,包括数据成员(属性)和成员函数(方法)。类是C++中实现封装、继承和多态的基础结构。
基本语法[编辑 | 编辑源代码]
C++中使用class
关键字声明类,基本语法结构如下:
class ClassName {
access_specifier:
// 成员变量(属性)
data_type member_variable;
// 成员函数(方法)
return_type member_function(parameters);
};
其中:
access_specifier
可以是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 |
用途 | 面向对象设计 | 数据聚合 |
数学表示[编辑 | 编辑源代码]
类可以形式化表示为: 其中:
- 是数据成员的集合
- 是成员函数的集合
最佳实践[编辑 | 编辑源代码]
1. 使用有意义的类名(名词或名词短语) 2. 遵循单一职责原则 3. 数据成员通常设为private 4. 成员函数按功能分组 5. 考虑使用const成员函数 6. 大型类考虑使用头文件和源文件分离
常见错误[编辑 | 编辑源代码]
- 忘记类声明末尾的分号
- 混淆类声明和类实例化
- 访问private成员而不通过public接口
- 循环包含头文件
总结[编辑 | 编辑源代码]
C++类声明是构建面向对象程序的基础,它封装了数据和行为,提供了访问控制机制。理解类声明的各个方面对于编写可维护、可扩展的C++代码至关重要。