施磊c++基础3

面向对象(OOP)

3.1 类与对象基础

OOP的四大特征是什么?
抽象 — 封装 — 继承 — 多态

类 -》 实体
访问限定符:
public (公共),private (私有),protected (保护)

对于成员属性

#include<iostream>
using namespace std;

const int NAME_LEN = 20;
class CGOODS
{
   
private:
	char _name[NAME_LEN];
	double _price;
	int _amount;
};
int main()
{
   

	CGOODS good;
	cout << good._price << endl;
	return 0;
}

报错
在这里插入图片描述
所以,属性一般都是私有的,能具有更高的安全性

而为了能访问属性,一般会提供公有的方法

public://公有的成员方法
	void init(char* name, double price, int amount);
	void show();

	void setName(char* name) {
    strcpy(_name, name); }
	void setPrice(double price) {
    _price = price; }
	void setAmount(int amount) {
    _amount = amount; }

	const char* getName() {
    return _name; }
	double getPrice() {
    return _price; }
	int getAmount() {
    return _amount; }

类体内实现的方法,自动处理成inline内联函数

而在类外定义的成员方法,则会和一般函数一样有函数调用过程


void CGOODS::init(const char* name, double price, int amount)
{
   
	strcpy(_name, name);
	_price = price;
	_amount = amount;
}

void CGOODS::show()
{
   
	cout << "name: " << _name << endl;
	cout << "price: " << _price << endl;
	cout << "amount: " << _amount << endl;

}

int main()
{
   

	CGOODS good1;
	//cout << good._price << endl;
	good1.init("面包", 10.0, 200);
	good1.show();
	good1.setPrice(20.5);
	good1.show();

	CGOODS good2;

	good2.init("空调", 10000,50);
	good2.show();
	return 0;
}

计算对象的内存大小,对象的内存大小只和成员变量有关。(与struct结构体相同)

类可以定义无数个对象,每一个对象都有自己的成员变量,但是共用一套成员方法。

那么成员方法怎么知道处理哪个对象的信息?
init(name,price,amount)=》怎么知道初始化哪个对象?
答:会把调用的对象的地址传进该成员方法
即,类的成员方法一经编译,所有的方法参数,都会加一个this指针,接收调用该方法的对象的地址

3.2 构造函数与析构函数

先来一个顺序栈代码

#include<iostream>
using namespace std;

class SeqStack
{
   

public:
	void init(int size = 10)
	{
   
		_pstack = new int[size];
		_top = -1;
		_size = size;
	}
	void release()
	{
   
		delete[]_pstack;
		_pstack = nullptr;

	}
	void push(int val)
	{
   
		if (full())
			resize();
		_pstack[++_top] = val;
	}
	void pop(
### 施磊 C++ muduo 项目介绍 muduo是一个高性能的C++网络库,由陈硕开发并维护。此库广泛应用于高并发服务器程序的设计与实现中[^2]。 #### 主要特性 - **线程安全**:通过`shared_ptr`和`weak_ptr`解决多线程环境下共享资源的安全访问问题。 - **高效性能**:针对Linux平台进行了大量优化,能够处理大量的并发连接请求。 - **易于扩展**:提供了丰富的接口供开发者自定义协议解析逻辑和服务端业务流程控制。 #### 使用场景 适用于构建各种类型的分布式系统,特别是需要频繁通信的服务间交互模块。例如即时通讯软件、在线游戏后台等都需要依赖类似的框架来保证系统的稳定性和响应速度。 ```cpp // 创建TCP服务器实例 TcpServer server(loop, InetAddress(listenPort), "EchoServer"); server.setConnectionCallback( std::bind(&onConnection, _1)); server.setMessageCallback( std::bind(&onMessage, _1, _2, _3)); server.start(); loop.loop(); ``` 上述代码展示了如何利用muduo创建一个简单的回声(Echo) TCP Server,在这里注册了两个回调函数分别用于新连接建立以及接收到消息后的事件触发。 #### 学习路径建议 对于想要深入了解该项目的同学来说,可以从以下几个方面入手: - 阅读官方文档及注释说明; - 参考施磊老师的《C++课程笔记》系列资料中的相关内容部分[^1]; - 实践操作启动样例工程,熟悉基本命令行指令[^3];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值