指针权限,new与delete,类与对象,函数模板,类模板的用法
指针权限 用法
void Print(const char* SecretPointer)
{cout << "绝密指令为:";cout << SecretPointer << endl;
}void Change(int& number, int* const FixedPointer)
{cout << "更换站台数字为:";cin >> number;cout << *FixedPointer << endl;
}int main()
{char* SecretPointer_01 = (char*)malloc(sizeof(char) * 20);cout << "请输入绝密指令:";cin >> SecretPointer_01;const char* SecretPointer = SecretPointer_01;Print(SecretPointer);int number = 100;int* const FixedPointer = &number;cout << "原站台数字为:" << *FixedPointer << endl;Change(number, FixedPointer);return 0;
}
new与delete 用法
#include <iostream>
using namespace std;int* CreateSpace1(int*& PointerOfSum1)
{PointerOfSum1 = new int(0); // 1 return new int[5]{ 1,2,3,4,5 }; // 2
}void AddArray1(int*& PointerOfSum1, int*& PointerOfArray1)
{for (int i = 0; i < 5; i++){(*PointerOfSum1) += (*(PointerOfArray1 + i));}
}// class StupidPerson
{
public:StupidPerson(int IQ = 10):_IQ(IQ){}int GetIQ(){return _IQ;}
private:int _IQ;
};StupidPerson* CreateSpace2(int*& PointerOfSum2)
{PointerOfSum2 = new int(0);return new StupidPerson[5]; // 3
}void AddArray2(int*& PointerOfSum2, StupidPerson*& PointerOfArray2)
{for (int i = 0; i < 5; i++){(*PointerOfSum2) += ((*(PointerOfArray2 + i)).GetIQ());}
}//class SmartPerson
{
public:SmartPerson(int IQ = 100):_IQ(IQ){}~SmartPerson(){_IQ = 0;}int GetIQ(){return _IQ;}
private:int _IQ;
};SmartPerson* CreateSpace3(int*& PointerOfSum3)
{PointerOfSum3 = new int(0);return new SmartPerson[5]{ SmartPerson(),SmartPerson(101),SmartPerson(102) ,SmartPerson(99) ,SmartPerson(107) }; // 4
}void AddArray3(int*& PointerOfSum3, SmartPerson*& PointerOfArray3)
{for (int i = 0; i < 5; i++){(*PointerOfSum3) += ((*(PointerOfArray3 + i)).GetIQ());}
}int main()
{int* PointerOfSum1 = nullptr;int* PointerOfArray1 = CreateSpace1(PointerOfSum1);AddArray1(PointerOfSum1, PointerOfArray1);cout << "总和为:" << (*PointerOfSum1) << endl;delete PointerOfSum1; // 5delete[] PointerOfArray1; // 6//int* PointerOfSum2 = nullptr;StupidPerson* PointerOfArray2 = CreateSpace2(PointerOfSum2);AddArray2(PointerOfSum2, PointerOfArray2);cout << "IQ总和为:" << (*PointerOfSum2) << endl;delete PointerOfSum2;delete[] PointerOfArray2;//int* PointerOfSum3 = nullptr;SmartPerson* PointerOfArray3 = CreateSpace3(PointerOfSum3);AddArray3(PointerOfSum3, PointerOfArray3);cout << "IQ总和为:" << (*PointerOfSum3) << endl;delete PointerOfSum3;delete[] PointerOfArray3;//SmartPerson* ps = (SmartPerson*)malloc(sizeof(SmartPerson) * 10);cout << "内存池已经创建完成!" << endl;new(ps)SmartPerson(110); // 7new(ps + 1)SmartPerson(103);cout << "第一个人智商为:" << ps->GetIQ() << endl;cout << "第二个人智商为:" << (ps + 1)->GetIQ() << endl;ps->~SmartPerson(); // 8(ps + 1)->~SmartPerson();return 0;
}
类与对象 用法
test.h#include <iostream>
using namespace std;class Country
{friend class Citizen;friend istream& operator>>(istream& cin, Country& country);friend ostream& operator<<(ostream& cout, const Country& country);
public://构造函数Country();//拷贝构造函数Country(const Country& other);//析构函数~Country();//赋值运算符重载Country& operator=(const Country& other);
private:char* _countryname;char* _capital;
};
//流插入运算符重载
istream& operator>>(istream& cin, Country& country);
//流提取运算符重载
ostream& operator<<(ostream& cout, const Country& country);//class Citizen
{friend int operator>(const Citizen& c1, const Citizen& c2);friend istream& operator>>(istream& cin, Citizen& citizen);friend ostream& operator<<(ostream& cout, const Citizen& citizen);
public://构造函数explicit Citizen(bool iscriminal = false);//拷贝构造函数Citizen(const Citizen& other);//析构函数~Citizen();//赋值运算符重载Citizen& operator=(const Citizen& other);//前置++运算符重载Citizen& operator++();//后置++运算符重载Citizen operator++(int);//普通运算符重载Citizen& operator-(int num);//静态成员函数static int GetTotalCitizen();//友元类的跨类访问void GetCountry();
private://成员变量char* _personalname;int _age;Country _nationality;bool _iscriminal;int _creditscore;const int _maxcreditscore;//类的静态区成员变量static int _totalcitizen;
};
//普通运算符重载
int operator>(const Citizen& c1, const Citizen& c2);
//流插入运算符重载
istream& operator>>(istream& cin, Citizen& citizen);
//流提取运算符重载
ostream& operator<<(ostream& cout, const Citizen& citizen);
//func.cpp#include "test.h"//Country类相关
Country::Country()
{_countryname = new char[20]{ '\0' };_capital = new char[20]{ '\0' };
}Country::Country(const Country& other)
{_countryname = new char[20]{ '\0' };_capital = new char[20]{ '\0' };memcpy(_countryname, other._countryname, sizeof(char) * 20);memcpy(_capital, other._capital, sizeof(char) * 20);
}Country::~Country()
{delete[] _countryname;delete[] _capital;
}Country& Country::operator=(const Country& other)
{if (&other != this){memcpy(_countryname, other._countryname, sizeof(char) * 20);memcpy(_capital, other._capital, sizeof(char) * 20);}return *this;
}istream& operator>>(istream& cin, Country& country)
{cin >> country._countryname >> country._capital;return cin;
}ostream& operator<<(ostream& cout, const Country& country)
{cout << country._countryname << " " << country._capital;return cout;
}//Citizen类相关
Citizen::Citizen(bool iscriminal):_age(0),_nationality(),_iscriminal(iscriminal),_creditscore(0),_maxcreditscore(100)
{_personalname = new char[20]{ '\0' };_totalcitizen++;
}Citizen::Citizen(const Citizen& other):_age(other._age), _nationality(other._nationality), _iscriminal(other._iscriminal), _creditscore(other._creditscore), _maxcreditscore(other._maxcreditscore)
{_personalname = new char[20]{ '\0' };memcpy(_personalname, other._personalname, sizeof(char) * 20);_totalcitizen++;
}Citizen::~Citizen()
{delete[] _personalname;_totalcitizen--;
}Citizen& Citizen::operator=(const Citizen& other)
{if (&other != this){_age = other._age;_nationality = other._nationality;_iscriminal = other._iscriminal;_creditscore = other._creditscore;memcpy(_personalname, other._personalname, sizeof(char) * 20);}return *this;
}Citizen& Citizen::operator++()
{if (_creditscore < _maxcreditscore){_creditscore++;}return *this;
}Citizen Citizen::operator++(int)
{Citizen tmp(*this);if (_creditscore < _maxcreditscore){_creditscore++;}return tmp;
}Citizen& Citizen::operator-(int num)
{if (_creditscore > 0){_creditscore -= num;if (_creditscore < 0){_creditscore = 0;}}return *this;
}int operator>(const Citizen& c1, const Citizen& c2)
{if (c1._creditscore > c2._creditscore){return 1;}else if (c1._creditscore < c2._creditscore){return 2;}else{return 0;}
}istream& operator>>(istream& cin, Citizen& citizen)
{cin >> citizen._personalname >> citizen._age >> citizen._nationality>> citizen._iscriminal >> citizen._creditscore;return cin;
}ostream& operator<<(ostream& cout, const Citizen& citizen)
{cout << citizen._personalname << " " << citizen._age << " " << citizen._nationality<< " " << citizen._iscriminal << " " << citizen._creditscore;return cout;
}int Citizen::GetTotalCitizen()
{return _totalcitizen;
}void Citizen::GetCountry()
{cout << _nationality._countryname << " " << _nationality._capital << endl;
}//类的静态区成员变量定义
int Citizen::_totalcitizen = 0;
//test.cpp#include "test.h"int main()
{Citizen Shen(0);cin >> Shen;cout << Shen << endl;Citizen Jun(Shen);cout << Jun << endl;Citizen Elon(0);cin >> Elon;cout << Elon << endl;cout << "此时人数:" << Citizen::GetTotalCitizen() << endl;return 0;
}
函数模板 用法
// test.h#include <iostream>
using namespace std;template <typename T>
void Swap(T& a, T& b)
{T tmp = a;a = b;b = tmp;
}template <typename T1, typename T2, typename T3>
void Print(const T1& a, const T2& b, const T3& c)
{cout << a << " " << b << " " << c << endl;
}
// test.cpp
#include "test.h"int main()
{int x = 1;int y = 2;char m = 'x';char n = 'y';cout << "交换前:" << endl;cout << x << " " << y << endl;cout << m << " " << n << endl;Swap(x, y);Swap(m, n);cout << "交换后:" << endl;cout << x << " " << y << endl;cout << m << " " << n << endl;//const char* pointer = "根据ASCII码表对应的(值/字符)为";char obj1 = 'A';int obj2 = 65;Print(obj1, pointer, obj2);Print<int, const char*, char>(obj1, pointer, obj2); return 0;
}
类模板 用法
// test.h
#include <iostream>
using namespace std;template <typename T>
class Person
{friend istream& operator>>(istream& cin, Person<T>& person){cin >> person._name >> *(person._luckysymbol);return cin;}friend ostream& operator<<(ostream& cout, Person<T>& person){cout << person._name << " " << *(person._luckysymbol);return cout;}
public:Person();Person(const Person& other);~Person();Person& operator=(const Person& other);
private:char* _name;T* _luckysymbol;
};template <typename T>
Person<T>::Person()
{_name = new char[20]{ 0 };_luckysymbol = new T(0);
}template <typename T>
Person<T>::Person(const Person& other):_name(new char[20]{ 0 }), _luckysymbol(new T(0))
{memcpy(_name, other._name, sizeof(char) * 20);*_luckysymbol = *(other._luckysymbol);
}template <typename T>
Person<T>::~Person()
{delete _luckysymbol;delete[] _name;
}template <typename T>
Person<T>& Person<T>::operator=(const Person& other)
{if (&other != this){memcpy(_name, other._name, sizeof(char) * 20);*_luckysymbol = *(other._luckysymbol);}return *this;
}
// test.cpp
#include "test.h"int main()
{Person<int> Shen;Person<char> Hu;Person<double> Ye;cin >> Shen >> Hu >> Ye;Person<int> Junyang(Shen); Person<char> Yao; Yao = Hu; cout << Shen << endl;cout << Hu << endl;cout << Ye << endl;cout << Junyang << endl;cout << Yao << endl;return 0;
}
相关文章:
指针权限,new与delete,类与对象,函数模板,类模板的用法
指针权限 用法 void Print(const char* SecretPointer) {cout << "绝密指令为:";cout << SecretPointer << endl; }void Change(int& number, int* const FixedPointer) {cout << "更换站台数字为:";c…...
Unity——脚本与序列化
在介绍序列化之前,我们先来了解一下为什么要对数据进行序列化 数据序列化有以下几个主要的应用场景和目的: 1. 持久化存储:序列化可以将对象或数据结构转换为字节序列,使得其可以被存储在磁盘上或数据库中。通过序列化ÿ…...
NJ求职盘点
电子显示 集成电路 地平线 后摩智能 芯启源 自动驾驶 地平线 栖霞区兴智科技园 泊车、SLAM/3D算法工程师 https://wecruit.hotjob.cn/SU64819a4f2f9d2433ba8b043a/pb/social.html?currentPage1 后摩智能 栖霞区兴智科技园 视觉感知算法资深工程师 可以做自动驾驶前瞻性…...
01卡特兰数
卡特兰数跟排列组合很有关系,所以在看此文章前请掌握: 加法原理乘法原理A(m,n)计算公式及其原理C(m,n)计算公式及其原理 前言 今天您将会学习到基本的卡特兰数及其应用。 一、卡特兰数是什么? 卡特兰数(Catalan number࿰…...
若依前端vue设置子路径
若依前端vue设置子路径 说明:本文档中以前后端分离版为例,版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…...
Vue中使用pdf.js实现在线预览pdf文件流
以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤: 1. 安装pdf.js npm install pdfjs-dist2. 引入pdf.js 在需要使用的组件中,使用以下代码引入pdf.js: import pdfjsLib from pdfjs-dist3. 加载pdf文件流 使用pdf.js的getDocument()方…...
态、势、感、知与时空、关系
态势感知是一种通过收集、整合、分析和解释大量的时空数据,以获取关于特定领域、地区或事件的全面理解的过程。时空和关系在态势感知中扮演着非常重要的角色。 态:态指的是物体或系统所处的状态或状况。在不同的态下,物体或系统的性质、行为和…...
D. Paths on the Tree
Problem - 1746D - Codeforces 思路:先分析一下题意,根据第一条性质,每次只能够从1开始,而第二条性质则表明对于每个节点来说,经过这个节点的子节点的路径条数应该尽量均衡,最大值与最小值相差不能超过1&am…...
CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
相信很多朋友都想知道, Cocos Creator 资源的定义? Cocos Creator 常见的资源包含哪些?Cocos Creator 资源的管理机制是什么样的? Cocos Creator 中所有继承自 Asset 的类型都统称资源 ,例如:Texture2D、Sp…...
大数据课程L1——网站流量项目的概述整体架构
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的案例概述; ⚪ 了解网站流量项目的数据埋点和采集; ⚪ 了解网站流量项目的整体架构; 一、网站流量项目概述 1. 背景说明 网站流量统计是改进网站服务的重要手段之一…...
提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库
title: 提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库 categories: 独立博客的方方面面 前段时间, 未来降低网址运行成本,搭了一套Mysql Docker 数据库, 包括外部链接,数据备份,数据导出,数据恢复一套解…...
信息安全技术概论-李剑-持续更新
图片和细节来源于 用户 xiejava1018 一.概述 随着计算机网络技术的发展,与时代的变化,计算机病毒也经历了从早期的破坏为主到勒索钱财敲诈经济为主,破坏方式也多种多样,由早期的破坏网络到破坏硬件设备等等 ,这也…...
java项目基于 SSM+JSP 的人事管理系统
java项目基于 SSMJSP 的人事管理系统 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好,今天和大家聊的是 Java 基于 SSM 的人事管理系统。…...
【Node.js】—基本知识点总结
【Node.js】—基本知识总结 一、命令行常用操作 二、Node.js注意点 Node.js中不能使用BOM和DOM操作 总结 三、Buffer buffer是一个类似于数组的对象,用于表示固定长度的字节序列buffer的本质是一段内存空间,专门用来处理二进制数据 特点:…...
Leetcode.174 地下城游戏
题目链接 Leetcode.174 地下城游戏 hard 题目描述 恶魔们抓住了公主并将她关在了地下城 d u n g e o n dungeon dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公…...
python实现adb辅助点击屏幕工具
#!/usr/bin/env python # -*- coding: utf-8 -*-import re import os import time import subprocess import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk# 设置ADB路径(根据你的系统和安装路径进行调整) ADB_PATH C…...
智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击
智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击 Safful发现了一个有趣的错误,有可能成为一些 DeFi 项目的攻击媒介。这个错误尤其与著名的 ERC777 代币标准有关。此外,它不仅仅是众所周知的黑客中常见的简单的重入问题。 这篇文章对 …...
nodejs 爬虫 axios 异步爬虫 教程 【一】
axios 自定义headers axios.defaults.headers.common["User-Agent"] "Googlebot/2.1 (http://www.google.com/bot.html)"; 运行环境: node :v18 const axios require("axios"); axios.defaults.headers.common["U…...
Swift学习笔记三(Dictionary 篇)
1 Dictionary 概念 字典储存无序的互相关联的同一类型的键和同一类型的值的集合。字典类型的全写方式 Dictionary<Key, Value>,简写方式 [Key: Value],建议使用简写方式。字典的 key 必须是可哈希的。 2 Dictionary创建 2.1 初始器创建方式 2.2 …...
javax.mail 遇到501 mail from address must be same as authorization user 的問題
使用不同的兩個帳戶发送email时,第一个账户可以发送成功,但到第二个账户的时候就报出了501 mail from address must be same as authorization user的错误。 具体代码如下: import java.util.Date; import java.util.List; import java.util.…...
【Python】网络编程
Socket Socket (简称 套接字)是进程之间通信一个工具,进程之间想要进行网络通信需要socket。Socket负责进程之间的网络数据传输,好比数据的搬运工。 客户端和服务端 2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端 Socket服务…...
客户端开发常用框架
在Unity游戏开发中,客户端常用的框架包括以下几种: 1.Unity的网络框架:Unity自带了网络框架,包括Unity Networking、Unity Matchmaker和Unity Remote等。这些框架可以帮助我们进行游戏的联机对战、排行榜、跨平台等功能的设计和实…...
数据分析综述
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
区块链技术与应用 - 学习笔记2【密码学基础】
大家好,我是比特桃。本系列笔记只专注于探讨研究区块链技术原理,不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划,在“加快数字发展 建设数字中国”篇章中,区块链被列为“十四五”七大数字经济重点产业之一&#…...
制作Linux发行版安装镜像:复刻centos镜像安装ISO
制作Linux发行版安装镜像:复刻centos镜像安装ISO 我们平时经常下载Linux各个发行版,下载ISO,安装使用。那么ISO到底是如何制作的?安装过程是什么原理? 近来打算讲镜像制作的过程、原理,通过一个专栏分享一…...
【复习socket】每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——29/70 第二十九天
专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔ 如果大家觉得有帮助的话,感谢大家帮忙 点…...
postgresql-常用数学函数
postgresql-常用数学函数 案例 案例 --求余 1 select 5%2 as t; --绝对值 17.4 select abs(-17.4) as t2; -- 大于等于最小整数 -42 select ceil(-42.8) as t3; -- 小于等于的最大整数 42 select floor(42.3) as t4; -- 四舍五入 44 select round(43.6) as t5; -- 向零取整 12…...
Docker实战技巧(一):常用命令与最佳实践
一、原理 1、Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,它能直接访问物理设备,会给每一台虚拟机分配内存、CPU、网络、磁盘等资源,也可以确保虚拟机对应的硬…...
使用CUDA计算GPU的理论显存带宽
文章目录 一、显存带宽和理论显存带宽1. 显存带宽2. 理论显存带宽1)计算公式2)举例 二、利用CUDA计算理论显存带宽 一、显存带宽和理论显存带宽 1. 显存带宽 显存带宽是指显存和GPU计算单元之间的数据传输速率。 显存带宽越大,意味着数据传…...
npm install依赖冲突解决办法
今天npm的时候发现报错,原来是依赖冲突了 npm后面加上这个指令就可以顺利的安装依赖了。问题主因就是不同开发用了不同版本node导致依赖版本不同,出现了成功冲突,这是段指令;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但…...
如何制作推广网站/开网店如何运营和推广
这是我写的旋风式的编程语言简介 —— 我本来为亚马逊开发者杂志本月的期刊写的,但是发现我写的东西没法见人。 首先,我偶尔一不小心口出脏话,或者对上帝不恭的话,所以在很官方很正式的亚马逊上发表是不合适的; 所以我…...
电子商务网站的建设包含哪些流程/网络免费推广平台
数据库三范式: 1.必有主键,各个字段原子性不可再分。 2.在1之上要求所有非主键完全依赖主键。 3.在2之上要求所有非主键直接依赖主键 五种约束:主键、唯一、非空、默认、外键。 首先创建两张表,一张主表,一张从表&…...
加大政府网站建设/微信营销的方法有哪些
故障存储:WD2500AAJS-75M0A0 故障现象:加电后敲盘,电机停转 故障分析: 和用户沟通中得知此盘为DELL机器原装盘,正常开机使用过程中受外力机箱从桌子上摔下来,用户已经尝试把硬盘挂载到USB接口上进行读取的操…...
天津北京网站建设公司哪家好/厦门百度竞价推广
APScheduler简介 APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时…...
胶南网站建设价格/seo的工作原理
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…...
企业网站建设实训报告/网络代理app
Flutter中TDD的优势对单元测试非常好的支持是选择Flutter的一个重要原因。因为这是保证TDD流畅进行的重要基础。Flutter中单元测试的优势主要有两个方面:1、运行速度快。Flutter的测试代码运行速度非常快,基本是几秒最慢十几秒就开始运行。我们TDD中需要…...