C++的使用

简介: C++的使用

类与对象

class People {
public:
    //成员变量
    char name[20];
    int age;
    //成员函数
    char *getName();
    int getAge();
    //构造函数
    People();
    People(int age);
    People(int age,char name[]);
    //复制构造函数
    People(People &people);
    //析构函数
    ~People();
 
};
#include "People.h"
 
int People::getAge() {
    return age;
}
 
char *People::getName() {
    return name;
}
 
int main(){
    People people;
    people.getName();
    People *p;
    p=people;
    p->getName();
    People people1(20);
    People people2(30,"abc");
}
 
People::People(){
 
}
 
People::People(int age) {
    this->age = age;
}
//构造函数:在创建对象时,进行初始化
People::People(int age, char *name) {
    this->age = age;
    this->name = name;
}
//复制构造函数:对象备份
People::People(People &people) {
    age = people.age;
    name = people.name;
}
//析构函数 一个类只能有一个析构函数,并且不能重载,在回收对象时,对资源进行回收
People::~People(){
    age = 0;
    name = NULL;
}

2.友元

当用户希望另一个类能够访问当前类的私有成员时,可以在当前类中将 另一个类作为自己的友元类,这样在另一个类中就可以访问当前类的 私有成员了

通过friend关键字,暴露protect和private的属性,供其他无法访问的类访问

char *getHome(People &people);
对应的是
char *People::getHome(People &people) {
    return people.home;
}
 
 
friend char *getHome(People &people);
对应的是
char *getHome(People &people) {
    return people.home;
}
声明友元类
friend class Person;
声明友元函数
friend char *getHome(People &people);

命名空间

命名空间就是一个命名的范围区域,程序员在这个特 定的范围内创建的所有标识符都是唯一的

关键字namespace

 
namespace name1{
    char name[] = "wang";
}
namespace name2{
    char name[] = "long";
}

使用:

using namespace name1; 
或 name1::name;

继承

继承方式有3种派生类型,分别为公有(public)型、保护 ( protected ) 型 和 私 有 ( private ) 型

class People : public Person{


公有型派生表示对于基类中的public数据成员和成员函数,在派 生类中仍然是public;对于基类中的private数据成员和成员函数,在 派生类中仍然是private


私有型派生表示对于基类中的public、protected数据成员和成员 函数,在派生类中可以访问。基类中的private数据成员,在派生类中 不可以访问


保护型派生表示对于基类中的public、protected数据成员和成员 函数,在派生类中均为protected。protected类型在派生类的定义时 可以访问,用派生类声明的对象不可以访问,也就是说在类体外不可 以访问。protected成员可以被基类的所有派生类使用,这一性质可以 沿继承树无限向下传播。


当从父类派生一个子类并声明一个子类的对象时,它将先 调用父类的构造函数,然后调用当前类的构造函数来创建对象;在释 放子类对象时,先调用的是当前类的析构函数,然后是父类的析构函 数

多重继承中的基类构造函数 被调用的顺序以类派生表中声明的顺序为准。派生表就是多重继承定 义中继承方式后面的内容,调用顺序就是按照基类名标识符的前后顺 序进行的


虚函数允许在派生类中重新 定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和 派生类中的同名函数。关键字 virtual  


覆盖和重载的区别是,重载是同一层次函数名相同,覆盖是在继 承层次中成员函数的函数原型完全相同。


包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚 函数。纯虚函数(pure virtual function)是指被标明为不具体实现的 虚成员函数,它不具备函数的功能

虚函数:允许子类重写

纯虚函数:没有实现的函数 ,子类必须实现

virtual char* getName() = 0;


目录
相关文章
|
4天前
|
存储 Java
面试官:素有Java锁王称号的‘StampedLock’你知道吗?我:这什么鬼?
面试官:素有Java锁王称号的‘StampedLock’你知道吗?我:这什么鬼?
44 23
|
4天前
|
云安全 安全 网络协议
安全研究所 | 伪装搜狗输入法的木马分析
近年来,黑灰产业的犯罪团伙数量急剧上升,特别是在与办公软件相关领域。这些团伙主要针对国内企业用户,通过伪装成合法的办公软件进行精心设计的诈骗和诱导行为,其主要目的是欺骗企业员工下载并激活木马病毒,以此来窃取公司资金或获取企业敏感文件。
|
4天前
|
容灾 Java 测试技术
低成本、高稳定性 | 满帮集团 Eureka 和 ZooKeeper 的上云实践
业务体量增大后,日益凸显的架构稳定性问题该如何解决?满帮集团选择了上阿里云,采用阿里云 MSE Nacos,MSE ZooKeeper 产品替换原先的 Eureka 和 Zookeeper 集群,做到了低成本快速的架构升级,以及上云期间业务流量的无损平滑迁移。
|
4天前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态。
|
4天前
|
机器学习/深度学习 算法 物联网
LISA微调技术解析:比LoRA更低的显存更快的速度
LISA是Layerwise Importance Sampling for Memory-Efficient Large Language Model Fine-Tuning的简写,由UIUC联合LMFlow团队于近期提出的一项LLM微调技术,可实现把全参训练的显存使用降低到之前的三分之一左右,而使用的技术方法却是非常简单。
|
4天前
|
Java 测试技术 开发者
卓越工程之单元测试在行权鉴权中的实践
这篇文章着重在“实践”上,是对Java编程技巧之单元测试用例编写流程这篇文章的实际应用,并没有高深的理论和技术。
53 10
|
4天前
|
数据采集 监控 算法
PID 控制系统如何优化?
PID 控制系统如何优化?
20 5
|
4天前
|
机器学习/深度学习 数据采集 监控
基于深度学习的图像识别技术在智能监控系统中的应用
【5月更文挑战第12天】 随着人工智能技术的迅猛发展,深度学习在图像处理领域已经取得了显著的成就。尤其是在图像识别任务中,卷积神经网络(CNN)等先进模型的应用极大提高了识别精度与效率。本文旨在探讨基于深度学习的图像识别技术如何被集成到智能监控系统中,以增强其自动检测和响应异常事件的能力。通过分析现有文献和最新研究成果,文章将详细阐述相关技术原理、系统架构、以及在实际场景中的应用效果,并讨论了面临的主要挑战和未来的发展方向。
|
4天前
局部变量和成员变量
局部变量和成员变量 1.定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值
19 6
|
4天前
|
存储 数据挖掘 API
解码客服工单系统:选型指南让您信手拈来
在选择客服工单系统时,企业应明确需求,考虑功能(如工单管理、知识库集成、自动化流程)、易用性、技术支持、可扩展性、安全性和合规性。ZohoDesk提供定制服务,满足企业效率提升和成本降低的需求。进行成本效益分析以确保投资回报。
27 6