从 C 到 C++:核心过渡(中)
1. 类与对象
C++ 的核心特性之一是支持面向对象编程(OOP)。类(class)是对象的蓝图,用于封装数据与操作。例如:
cpp
class Rectangle {
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double area() { return length * width; }
};
- 权限控制 :
private成员仅限类内访问,public成员可被外部调用。 - 构造函数 :用于初始化对象(如
Rectangle r(5.0, 3.0);)。
2. 构造函数详解
构造函数在对象创建时自动调用,支持重载和默认参数:
cpp
class Circle {
private:
double radius;
public:
Circle() : radius(1.0) {} // 默认构造函数
Circle(double r) : radius(r) {} // 参数化构造函数
};
- 初始化列表 :
: radius(r)比在函数体内赋值更高效。 - 默认构造:若未定义,编译器会生成无参构造,但若定义了其他构造,则需显式声明。
3. 对象的使用
对象通过 . 运算符访问成员:
cpp
Rectangle rect(4.0, 2.0);
std::cout << "Area: " << rect.area(); // 输出: Area: 8
-
栈与堆对象 :
cppRectangle r1(3, 4); // 栈对象 Rectangle* r2 = new Rectangle(5, 6); // 堆对象(需手动 delete)
4. 案例:封装矩形计算
cpp
#include <iostream>
class Rect {
private:
double len, wid;
public:
Rect(double l, double w) : len(l), wid(w) {}
double getArea() { return len * wid; }
void resize(double scale) { len *= scale; wid *= scale; }
};
int main() {
Rect r(10, 5);
std::cout << "初始面积: " << r.getArea() << std::endl; // 50
r.resize(2);
std::cout << "缩放后面积: " << r.getArea(); // 200
}
小结:C++ 的类机制将数据与行为绑定,通过构造函数确保对象初始状态合法,体现了封装与抽象的核心思想。下一节将深入析构函数、动态内存与继承。