c++类的封装例子

封装是面向对象编程中的一个重要概念,可以将数据和行为封装在一个类中,使其更安全、更易于维护和管理。下面是一个简单的封装类的例子,以及具体的过程:

  1. 定义类名称和成员变量:首先,我们需要定义一个类的名称和需要封装的成员变量。例如,我们想要封装一个人类的基本信息,包括姓名、年龄和性别,我们可以这样定义:
复制// Person.h
#ifndef PERSON_H
#define PERSON_H

#include <string>

class Person {
private:
    std::string name;
    int age;
    char gender;
public:
    Person(std::string name, int age, char gender);
    std::string getName() const;
    int getAge() const;
    char getGender() const;
    void setName(std::string name);
    void setAge(int age);
    void setGender(char gender);
};

#endif

在这个类中,我们将姓名、年龄和性别作为成员变量进行了封装。注意,在这里我们使用了 private 关键字将这些成员变量设置为私有变量,这样外部代码就不能直接访问它们。

  1. 定义构造函数和成员函数:接下来,我们需要定义构造函数和成员函数,以便外部代码可以通过调用这些函数来访问和修改成员变量。例如,我们可以这样定义 Person 类的构造函数和成员函数:
复制// Person.cpp
#include "Person.h"

Person::Person(std::string name, int age, char gender) {
    this->name = name;
    this->age = age;
    this->gender = gender;
}

std::string Person::getName() const {
    return name;
}

int Person::getAge() const {
    return age;
}

char Person::getGender() const {
    return gender;
}

void Person::setName(std::string name) {
    this->name = name;
}

void Person::setAge(int age) {
    this->age = age;
}

void Person::setGender(char gender) {
    this->gender = gender;
}

在这个例子中,我们定义了一个构造函数,用于初始化对象的成员变量。我们还定义了一些成员函数,如 getName()getAge()getGender(),用于返回对象的成员变量值。我们还定义了一些 set 函数,如 setName()setAge()setGender(),用于设置对象的成员变量值。

  1. 使用封装类:最后,我们需要使用这个封装类。例如,我们可以这样创建一个 Person 对象并设置其属性:
复制#include <iostream>
#include "Person.h"

int main() {
    Person p("John", 30, 'M');
    std::cout << "Name: " << p.getName() << std::endl;
    std::cout << "Age: " << p.getAge() << std::endl;
    std::cout << "Gender: " << p.getGender() << std::endl;
    p.setName("Jane");
    p.setAge(25);
    p.setGender('F');
    std::cout << "Name: " << p.getName() << std::endl;
    std::cout << "Age: " << p.getAge() << std::endl;
    std::cout << "Gender: " << p.getGender() << std::endl;
    return 0;
}

在这个例子中,我们首先创建了一个 Person 对象,并使用构造函数设置了它的姓名、年龄和性别。然后,我们使用 getName()getAge()getGender() 函数获取对象的属性,并使用 setName()setAge()setGender() 函数修改对象的属性。最后,我们输出修改后的对象属性。

这就是一个简单的封装类的例子,具体的过程包括定义类名称和成员变量、定义构造函数和成员函数,以及使用封装类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++封装Socket是一种常见的做法,用于简化网络编程操作。下面是一个简单的示例: ```cpp #include <iostream> #include <string> #include <WinSock2.h> // Windows平台下的socket库 #pragma comment(lib, "ws2_32.lib") // 链接到ws2_32.lib库 class Socket { public: Socket() { // 初始化WinSock库 if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cerr << "Failed to initialize WinSock" << std::endl; throw; } // 创建套接字 sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) { std::cerr << "Failed to create socket" << std::endl; WSACleanup(); // 清理WinSock库 throw; } } ~Socket() { closesocket(sock); // 关闭套接字 WSACleanup(); // 清理WinSock库 } // 连接到服务器 bool connectToServer(const std::string& ipAddress, int port) { serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(port); if (inet_pton(AF_INET, ipAddress.c_str(), &(serverAddr.sin_addr)) <= 0) { std::cerr << "Invalid address/Address not supported" << std::endl; return false; } if (connect(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) { std::cerr << "Connection failed" << std::endl; return false; } return true; } // 发送数据 bool sendData(const std::string& data) { if (send(sock, data.c_str(), data.length(), 0) < 0) { std::cerr << "Failed to send data" << std::endl; return false; } return true; } // 接收数据 std::string receiveData() { char buffer[4096]; memset(buffer, 0, sizeof(buffer)); std::string receivedData; while (true) { int bytesRead = recv(sock, buffer, sizeof(buffer) - 1, 0); if (bytesRead <= 0) break; receivedData += buffer; memset(buffer, 0, sizeof(buffer)); } return receivedData; } private: SOCKET sock; WSADATA wsaData; struct sockaddr_in serverAddr; }; int main() { Socket socket; // 连接到服务器 if (socket.connectToServer("127.0.0.1", 8080)) { std::cout << "Connected to server" << std::endl; // 发送数据 std::string data = "Hello, server!"; if (socket.sendData(data)) { std::cout << "Data sent: " << data << std::endl; // 接收数据 std::string receivedData = socket.receiveData(); std::cout << "Received data: " << receivedData << std::endl; } } return 0; } ``` 这是一个简单的封装了Socket例子,它实现了连接到服务器、发送数据和接收数据的功能。请注意,这个示例是基于Windows平台使用WinSock库的,如果你使用的是其他平台,需要使用相应的socket库进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值