C++核心过渡:类与对象精讲

从 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
  • 栈与堆对象 :

    cpp 复制代码
    Rectangle 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++ 的类机制将数据与行为绑定,通过构造函数确保对象初始状态合法,体现了封装与抽象的核心思想。下一节将深入析构函数、动态内存与继承。

相关推荐
沫璃染墨40 分钟前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆1 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
揽星河..2 小时前
【C语言】分支和循环
c语言·c++·算法
小熊恋旧2 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合2 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J2 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net2 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
晗夜未央3 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>3 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc