当前位置: 首页 > news >正文

侯捷 C++ 课程学习笔记:类的声明与构造函数

目录

一、类的声明

二、内联函数

三、访问级别

四、构造函数

五、构造函数重载

六、实际应用案例

七、学习心得


一、类的声明

类的声明是定义类的基本结构,包括类的成员变量和成员函数。类的声明分为类头和类体两部分。

  • 类头(class head):包含类的名称和访问级别。

  • 类体(class body):包含类的成员变量和成员函数的声明。

示例代码:

class complex {
public:
    complex(double r = 0, double i = 0) : re(r), im(i) { }
    complex& operator += (const complex&);
    double real() const { return re; }
    double imag() const { return im; }
private:
    double re, im;
    friend complex& __doapl(complex*, const complex&);
};

在上述示例中:

  • publicprivate 是访问级别,分别表示公有成员和私有成员。

  • complex 是类的构造函数,用于初始化对象。

  • operator += 是重载的赋值运算符。

  • realimag 是成员函数,用于获取复数的实部和虚部。

  • reim 是私有成员变量,用于存储复数的实部和虚部。

  • __doapl 是友元函数,用于实现某些特定的操作。

二、内联函数

内联函数(inline function)是一种特殊的函数,其定义在类体内部。内联函数的定义在类体内部完成,编译器会将其定义为内联函数的候选人。

示例代码:

class complex {
public:
    complex(double r = 0, double i = 0) : re(r), im(i) { }
    complex& operator += (const complex&);
    double real() const { return re; }
    double imag() const { return im; }
private:
    double re, im;
    friend complex& __doapl(complex*, const complex&);
};

在上述示例中,realimag 函数在类体内部定义,因此它们是内联函数的候选人。内联函数的定义在类体内部完成,可以提高函数的执行效率。

三、访问级别

访问级别(access level)决定了类的成员变量和成员函数的访问权限。C++ 中有三种访问级别:publicprotectedprivate

  • public:公有成员,可以在类的外部访问。

  • protected:保护成员,可以在类的内部访问,也可以在派生类中访问。

  • private:私有成员,只能在类的内部访问。

示例代码:

class complex {
public:
    complex(double r = 0, double i = 0) : re(r), im(i) { }
    complex& operator += (const complex&);
    double real() const { return re; }
    double imag() const { return im; }
private:
    double re, im;
    friend complex& __doapl(complex*, const complex&);
};

在上述示例中:

  • public 成员函数 realimag 可以在类的外部访问。

  • private 成员变量 reim 只能在类的内部访问。

四、构造函数

构造函数(constructor)是类中用于初始化对象的特殊成员函数。构造函数的名称与类名相同,没有返回值,可以重载。

示例代码:

class complex {
public:
    complex(double r = 0, double i = 0) : re(r), im(i) { }
    complex& operator += (const complex&);
    double real() const { return re; }
    double imag() const { return im; }
private:
    double re, im;
    friend complex& __doapl(complex*, const complex&);
};

在上述示例中,complex 是类的构造函数,用于初始化对象。构造函数可以有默认参数,如 double r = 0, double i = 0

五、构造函数重载

构造函数可以重载,即一个类可以有多个构造函数,只要它们的参数列表不同。

示例代码:

class complex {
public:
    complex(double r = 0, double i = 0) : re(r), im(i) { }
    complex() : re(0), im(0) { }
    complex& operator += (const complex&);
    double real() const { return re; }
    double imag() const { return im; }
private:
    double re, im;
    friend complex& __doapl(complex*, const complex&);
};

在上述示例中,complex 类有两个构造函数:

  • 一个带有两个参数的构造函数,用于初始化复数的实部和虚部。

  • 一个无参数的构造函数,用于初始化复数的实部和虚部为0。

六、实际应用案例

我们在实际应用中,构造函数的合理使用可以显著提升代码的可读性和可维护性。例如,在创建复数对象时,可以使用构造函数初始化复数的实部和虚部。

示例代码:

complex c1(2, 1);  // 使用带参数的构造函数
complex c2;         // 使用无参数的构造函数
complex* p = new complex(4);  // 使用带参数的构造函数创建指针对象

通过这种方式,可以灵活地创建和初始化复数对象,同时保持代码的简洁性和可读性。

七、学习心得

通过学习侯捷老师的 C++ 课程,我对类的声明、内联函数、访问级别和构造函数有了更深入的理解。特别是对构造函数的重载和内联函数的使用,为后续的面向对象编程打下了坚实的基础。

在实际编程中,合理使用构造函数和内联函数可以显著提高代码的执行效率和可读性。同时,理解访问级别的作用,有助于更好地封装类的内部数据,保护类的成员变量和成员函数。

相关文章:

  • 更换 Git 项目的远程仓库地址(五种方法)
  • Oracle备库srvctl start丢失某个原有的service_names的案例
  • 计算机毕业设计SpringBoot+Vue.jst在线文档管理系统(源码+LW文档+PPT+讲解)
  • Maven环境搭建
  • Java中的注解是什么?如何使用注解?
  • hugging face---transformers包
  • 面向长文本的多模型协作摘要架构:多LLM文本摘要方法
  • 项目8:信用违约预测-集成学习
  • JSONassert:JSON测试的体验高效工具
  • C++初阶——简单实现list
  • 计算机毕业设计SpringBoot+Vue.js服装商城 服装购物系统(源码+LW文档+PPT+讲解+开题报告)
  • 5. Go 方法(结构体的方法成员)
  • w225政府管理系统设计与实现
  • 【计算机网络】传输层TCP协议
  • dockerfile构建haproxy
  • jetson nano 开机自启动python文件
  • HBase安装
  • 基于拼接的宏基因组全流程
  • 【Bluedroid】AVRCP 连接源码分析(三)
  • 高等数学(上)题型笔记(六)定积分的应用
  • 网站首页排版设计/最新实时大数据
  • 大连建设学校网站/高清的网站制作
  • 注册网站多久/网站整站优化公司
  • 绵阳做网站的有哪些/百度知道怎么赚钱
  • 怎么网站能找人做装修事/中国十大品牌营销策划公司
  • 怎么给我 的网站做关键词/市场调研报告模板ppt