c++:回顾(一)

一、引用

1.从编译器的角度来讲:

        引用就是一种升级版的指针。

2.从语法形式来讲:

        引用是引用一块已经存在的合法空间

        引用变量即是引用空间的变量的别名

指针可以是野指针,他可以指向任何的地方,如果在c++中单纯使用指针,很容易把程序写的不堪入目

指针可以进行无限次的赋值,引用只能被引用一次。

二、动态开辟空间

在c中:

int *pa=(int *)malloc (sizeof(int));//malloc在堆上开辟空间并没有进行初始化

int *pb=(int *)calloc(1,sizeof(int));//calloc 在堆上开辟空间是由初始化的

int *pc=(int *)realloc(pb,sizeof(int)*10);//relloc在堆上开辟空间都是有初始化的

free(pa);

若多次释放会造成doublefree,程序会异常中止

在c++中:new和delete

int *pa=new int;//使用new按类型直接开辟空间,不会初始化数值

int *pa=new int();//()中填写初始化的值,如果不写默认为0

若要动态开辟连续空间:

int *pb=new int[1024];

int *pb=new int[1024]{0};

delete pa;

delete []pb;

三、类中特殊属性的初始化

const修饰的成员对象、类类型对象(没有默认构造函数的对象)、static修饰的成员对象

1.c++中const修饰的变量,必须初始化。类中有自定义类类型(但这个类对象没有默认构造函数供其生成对象),也必须在开辟空间时,进行初始化。

#include <iostream>
using namespace std;class A{A(int a){//有参构造}
};
class Stu
{
private:string name;int age;const int id;A a;public:// 初始化列表// 初始化列表的调用时机:在构造函数调用之前// 如果要全部使用初始化列表来完成对类中属性的初始化,需按照顺序Stu(string name, int age, int id) : name(name), age(age), id(id),a(1){cout << "Stu的有参构造" << endl;}void show(){cout<<"学号:"<<this->id<<"姓名:"<<this->name<<"年龄:"<<this->age<<endl;}
};
int main()
{Stu stu("zhangsan",20,1001);stu.show();return 0;
}

2.类中static修饰的类中属性的初始化

#include <iostream>
using namespace std;class A{A(int a){//有参构造}
};
class Stu
{
private:string name;int age;const int id;A a;//静态变量必须在类外完成初始化才能在静态区中分配空间//如果没有在类外进行初始化,那么它只是一个声明而已,没有空间static int count;public:// 初始化列表的调用时机:在构造函数调用之前// 如果要全部使用初始化列表来完成对类中属性的初始化,需按照顺序Stu(string name, int age, int id) : name(name), age(age), id(id),a(1){cout << "Stu的有参构造" << endl;count++;}void show(){cout<<"学号:"<<this->id<<"姓名:"<<this->name<<"年龄:"<<this->age<<endl;}
};
//类外对static变量进行初始化
int Stu::count=0;
int main()
{Stu stu("zhangsan",20,1001);Stu stu1("lisi",30,1002);stu.show();stu1.show();return 0;
}

类中静态属性,如果是public修饰的话,那么也可以直接使用域名访问符的形式直接访问,如Stu::count

并且static修饰的局部变量只能被初始化一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:前端实现图片懒加载怎么做?这不是撞我怀里了嘛!

前端懒加载&#xff08;也称为延迟加载或按需加载&#xff09;是一种网页性能优化的技术&#xff0c;主要用于在网页中延迟加载某些资源&#xff0c;如图片、视频或其他媒体文件&#xff0c;直到它们实际需要被用户查看或交互时才进行加载。这种技术特别适用于长页面或包含大量…

【JavaEE】Spring IoCDI详解

一.基本概念 1.Ioc基本概念 Ioc: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发发了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要自己通…

前端面试题日常练-day60 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. 在PHP中&#xff0c;以下哪个函数用于获取数组的长度&#xff1f; a) count() b) length() c) size() d) sizeof() 2. PHP中的预定义变量$_SESSION用于存储什么类型的数据&#xff1f; a) 用户…

美银美林:看好铜价涨到12000美元,这类铜矿企业弹性更大

美银美林指出&#xff0c;考虑到能源转型以及AI投资热潮对铜的需求巨大&#xff0c;到2026年铜供需缺口有望扩大一倍。给予紫金矿业、江西铜业等多家巨头买入评级&#xff0c;并认为一旦铜价上行&#xff0c;KGHM等规模较小、成本较高的企业的利润增长可能更为显著。 高盛、花…

小小万年历改头换面了

小小万年历改头换面了 ​ 前阶段编写了一个[万年历小程序][https://jl-zhenlaixiaowei.blog.csdn.net/article/details/139180401?spm=1001.2014.3001.5502],因为界面不太友好,所以这两天有空闲时间,我又对小工具进行了功能增加并改成了窗口界面,可以用鼠标点击和键盘输入…

python中while循环实现九九乘法表

i 1while i < 9: # 控制行的循环j 1while j < i: # 控制每行的输出print(f"{j}*{i}{j * i}\t", end"")j 1print()i 1运行截图&#xff1a;

餐饮淡季营销方案

餐饮淡季营销方案 时间: 2024-6-9 分类: 营销流量 作者: admin 0 次浏览 餐 饮 营 销 方 案 第一部分&#xff1a;餐饮淡季营销方案 第二部分&#xff1a;餐饮上半年营销方案 第一部分&#xff1a;餐饮淡季营销方案 春节过后&#xff0c;餐厅也将迎来一年中最漫长的经营淡季&a…

Cweek4+5

C语言学习 十.指针详解 6.有关函数指针的代码 代码1&#xff1a;(*(void (*)())0)(); void(*)()是函数指针类型&#xff0c;0是一个函数的地址 (void(*)())是强制转换 总的是调用0地址处的函数&#xff0c;传入参数为空 代码2&#xff1a;void (*signal(int, void(*)(int))…

ENSP校园网设计实验

前言 哈喽&#xff0c;我是ICT大龙。本次更新了使用ENSP仿真软件设计校园网实验。时间比较着急&#xff0c;可能会有错误&#xff0c;欢迎大家指出。 获取本次工程文件方式在文章结束部分。 拓扑设计 拓扑介绍---A校区 如图&#xff0c;XYZ大学校园网设计分为3部分&#xff0…

JDK下载安装Java SDK

Android中国开发者官网 Android官网 (VPN翻墙) 方案1&#xff1a;通过brew命令 下载OracleJDK(推荐) brew --version //是否已存在homebrew环境 brew install --cask oracle-jdk //通过brew命令直接下载并安装OracleJDK(VPN、登录密码) java -version //验证JDK是否下载并安装…

裸机程序设计模式

裸机程序的设计模式可以分为&#xff1a;轮询、前后台、定时器驱动、基于状态机。前面三种方法都无法解决一个问题&#xff1a;假设有A、B两个都很耗时的函数&#xff0c;无法降低他们互相之间的影响。第4中方法可以解决这个问题&#xff0c;但是实践起来有难度。 1、轮询模式…

UI学习的案例——照片墙

照片墙案例 在实现照片墙案例之前先讲一下userInteractionEnable这个属性。 首先这个属性属于UIView&#xff0c;这个属性是bool类型&#xff0c;如果为YES的话&#xff0c;这个UIView会接受有关touch和keyboard的相关操作&#xff0c;然后UIView就可以通过相应的一些方法来处…

启动xv6遇坑记录

我是在VMware上的Ubuntu22.04.4搭建的&#xff0c;启动xv6遇到超多bug&#xff0c;搞了好几天&#xff0c;所以记录一下。 目录 git push的时候报错 make qemu缺少包 运行make qemu时卡住 可能有影响的主机设置 git push的时候报错 remote: Support for password authent…

TMS320F280049学习3:烧录

TMS320F280049学习3&#xff1a;烧录 文章目录 TMS320F280049学习3&#xff1a;烧录前言一、烧录RAM二、烧录FLASH总结 前言 DSP的烧录分为两种&#xff0c;一种是将程序烧录到RAM中&#xff0c;一种是烧录到FLASH中&#xff0c;烧录ARM中的程序&#xff0c;只要未掉电&#x…

SpringBoot中@Scheduled注解默认单线程,改为多线程线程池

Spring Boot提供的Scheduled注解默认是以单线程方式执行。 1.配置类 Configuration public class ScheduleConfig implements SchedulingConfigurer {/** 定时任务线程池个数改为多线程。默认为单线程 */Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegi…

黑马集成电路应用开发入门课程

"黑马集成电路应用开发入门课程"旨在引导学员了解集成电路应用开发的基础知识和技能。课程内容涵盖集成电路原理、设计流程、应用开发工具等&#xff0c;通过实践项目和案例分析&#xff0c;帮助学员掌握集成电路应用开发的核心概念和方法&#xff0c;为未来在该领域…

轻松上手MYSQL:SQL优化之Explain详解

​​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 文章目录 一、Explain1.1 explain作用1.2 explain列说明idselect_typetableparti…

React antd 怎么封装权限按钮

在 React 中使用 Ant Design(antd)封装一个权限按钮通常涉及到两个主要部分:按钮的渲染逻辑和权限的验证。以下是一个基本的步骤和示例代码,展示如何封装一个权限按钮: 步骤 定义权限:首先,你需要定义应用中的权限。这些权限可能是一个简单的字符串数组,或者是更复杂的…

6.9总结(省赛排位赛1)

省赛排位赛1省赛排名赛1 - Virtual Judge (vjudge.net) 思路&#xff1a; 其实就是一个斐波拉契数列&#xff0c;当前项前两项之和&#xff0c;先将范围内的数全部存起来放进一个数组&#xff0c;再进行累加查询 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #incl…

Nginx替代软件

Nginx 是一款广受欢迎的高性能 Web 服务器&#xff0c;以其事件驱动的架构和轻量级的特点而闻名。尽管 Nginx 非常强大&#xff0c;但确实存在一些替代品&#xff0c;它们各自具有独特的优点。以下是一些 Nginx 的替代软件及其优点&#xff1a; 1. LiteSpeed - LiteSpeed 是…