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;


目录
相关文章
|
1天前
|
存储 机器学习/深度学习 人工智能
打破硬件壁垒!煎饺App:强悍AI语音工具,为何是豆包AI手机平替?
直接上干货!3000 字以上长文,细节拉满,把核心功能、使用技巧和实测结论全给大家摆明白,读完你就知道这款 “安卓机通用 AI 语音工具"——煎饺App它为何能打破硬件壁垒?它接下来,咱们就深度拆解煎饺 App—— 先给大家扒清楚它的使用逻辑,附上“操作演示”和“🚀快速上手不踩坑 : 4 条核心操作干货(必看)”,跟着走零基础也能快速上手;后续再用真实实测数据,正面硬刚煎饺 App的语音助手口令效果——创建京东「牛奶自动下单神器」口令 ,从修改口令、识别准确率到场景实用性,逐一测试不掺水,最后,再和豆包 AI 手机语音助手的普通版——豆包App对比测试下,简单地谈谈煎饺App的能力边界在哪?
|
3天前
|
云安全 监控 安全
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1053 5
|
10天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
708 42
|
14天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1140 41
|
14天前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
874 71
大厂CIO独家分享:AI如何重塑开发者未来十年
|
10天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
526 31
|
17天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
977 59
Meta SAM3开源:让图像分割,听懂你的话
|
2天前
|
机器学习/深度学习 传感器 自动驾驶
具身智能核心突破:物理模拟器与世界模型协同技术拆解
本文系统综述了物理模拟器与世界模型在具身智能发展中的协同作用,提出五级智能机器人分类体系(IR-L0至IR-L4),分析其在运动、操作与交互中的进展,并对比主流仿真平台与世界模型架构,探讨其在自动驾驶与关节机器人中的应用及未来挑战。
165 113