【C++入门】(十一)高级类
1. 常量成员函数是什么?
使用 const
将成员函数声明为 常量函数
,则表明它不会修改任何类成员的值
int getSpeed() const; //getSpeed()可以为常量函数,它只是返回成员变量 speed 的当前值 int Tricycle::getSpeed() const { return speed; } //如果将函数声明为常量函数,但该函数实现了修改成员的功能,编译器就会报错
2. 如何将类接口与实现分开?
2.1 接口与实现
创建和使用对象的其他程序部分看做类的客户,类声明相当于和这些客户签订的合约,它告诉客户,类有哪些数据可用,能做什么
//在 Tricycle 类的声明中,向客户爸爸们承诺: //1.每个 Tricycle 对象都能获取其速度(int getSpeed() const;) //2.可以在创建对象的初始速度时设置它(void setSpeed(int speed);) //3.且都能使用加速和刹车(void pedal();)(void brake();) class Tricycle { public: int getSpeed() const; //常量函数,承诺该函数打死不会修改 Tricycle 对象 void setSpeed(int speed); void pedal(); void brake(); private: int speed; };
2.2 组织类声明和函数定义
C++源代码中,类的定义和实现通常是分开的
//如果将 Tricycle 类的声明放在"Tricycle.hpp"文件中,那么类函数的定义将位于文件 "Tricycle.cpp"中 //"Tricycle.cpp"文件中需包含头文件: #include "Tricycle.hpp"
"Tricycle.hpp"文件
#include <iostream> class Tricycle { public: Tricycle(int initialSpeed); ~Tricycle(); int getSpeed() const { return speed; } void setSpeed(int speed); void pedal() { setSpeed(speed + 1); std::cout << "\nPedaling " << getSpeed() << " mph\n"; } void brake() { setSpeed(speed - 1); std::cout << "\nPedaling " << getSpeed() << " mph\n"; } private: int speed; };
"Tricycle.cpp"文件(main函数)
#include "Tricycle.hpp" // constructor for the object Tricycle::Tricycle(int initialSpeed) { setSpeed(initialSpeed); } // destructor for the object Tricycle::~Tricycle() { // do nothing } // set the trike's speed void Tricycle::setSpeed(int newSpeed) { if (newSpeed >= 0) { speed = newSpeed; } } // create a trike and ride it int main() { Tricycle wichita(5); wichita.pedal(); wichita.pedal(); wichita.brake(); wichita.brake(); wichita.brake(); return 0; }
3. 如何管理类?
3.1 内联实现的两种方法
//1.使用inline关键字,将成员函数声明成内联的 inline int Tricycle::getSpeed() { return speed; }
//2.将函数定义放在类声明中,该函数将自动变成内联的 class Tricycle { public: int getSpeed() { return speed; } //{ }后无分号 void setSpeed(int speed); };
tips:
① 内联函数和普通函数相比,可以加快程序的运行的速度,因为在调用内联函数时,不需要中断寻址,编译时直接将内联函数镶嵌到目标代码中。
② 内联是以增加空间消耗为代价,换取时间开销。
③ 下列情况使用内联: 该函数仅仅几行,且不含有for,while,switch语句;
该函数不断被重复调用;
④ 内联函数比宏安全,宏要考虑边际效应。
4. 如何找出并避免bug?
-
如果将程序设计成一系列彼此交互的类,可以提高效率
-
通过开发类,提高代码的可重用性
-
类还让代码更可靠。在类中,封装了完成任务所需的数据(将程序视为一组对象,其中每个对象都执行特定任务,可分散编程工作,同时确保它们组织有序)出问题时,更容易缩小范围到相关的类。
5. 补充
-
C++头文件通常使用扩展名
.hpp
(或不怎么常见的.h
);C++程序使用的文件拓展名为.cpp
-
类声明、类实现中都可以将成员函数声明成内联的
分类:
技术栈 / C++学习笔记
标签:
C++学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具