从java到C++入门

C++基础知识

    • 前言
    • 基础

前言

当初为了赶一波互联网热潮自学了java,如今因为需要就从java转向C++开发,于是就有了java到C++入门,每次的学习我都会记录一下C++的学习历程。

基础

  1. C++对于内存的控制管理比java要有更多要求,因此C++对于变量的创建是需要思考的,变量存在的意义就是方便管理内存,而创建变量就是申请一块合适的内存空间。
  2. 如何给变量申请合适的内存空间,就需要定义需要的数据类型,C++数据类型所占的内存大小(字节)如下所示,而具体到用有符号数还是无符号数就看具体需求:
数据类型占用内存空间(字节)
整型
short2
int4
long4
long long8
浮点型
float4
double8
字符型
char1
布尔类型
bool1
  1. 常数,用于记录程序中不可改变的数据,C++有两种定义方法:
    1、#define 宏定义
    2、const 修饰词

  2. 数据输入输出:
    1、cin>>变量 获取键盘输入
    2、cout<<数据 输出到控制台

  3. C++中的条件和循环语句就和java几乎一样

  4. 指针见C++灵魂->指针

  5. 结构体:属于自定义数据类型,可以存储不同的数据类型

语法:struct 结构体名称 {结构体成员列表};
  1. 内存四区(代码区、全局区、栈区、堆区):不同区域存放不同的数据,有不同的生命周期,便于灵活管理。
    程序运行前,编译后:
    1、代码区存放CPU执行的机器指令 ,有共享和只读特性。
    2、全局区存放全局变量、静态变量、字符串常量和const修饰的全局变量(全局常量)
    程序运行之后:
    1、栈区(编译器自动分配释放)存放局部变量和const修饰的局部变量(局部常量)
    (1)不要返回局部变量的地址
    (2)不要返回局部变量的引用
    2、堆区(程序员分配释放,否则程序结束后由系统释放)
    (1)由new关键字来将数据开辟到堆区新内存
    (2)由delete关键字将内存地址释放(释放数据时delete[ ])
  2. 引用:给变量其别名
例如:数据类型 &别名 = 原名;
  1. 函数参数传递方法:
    1、值传递:每次传递都会复制数据,会耗用内存;形参不会改变实参。
    2、地址传递(指针),可以减少占用内存,但会可能会造成原数值的修改,可以在传入时加上const防止修改数据的误操作。
    3、引用传递,可以简化指针,和地址传递效果一样,同样可以在传入时加上const防止修改数据的误操作。

  2. 引用课程里的对于引用的本质讲解
    引用的注意事项:1、引用必须初始化;2、引用不可更改

在这里插入图片描述

  1. C++函数的形参可以默认值【注:当其中一个形参有默认值,则该形参的右侧参数都得有默认值;函数声明和实现中只能写一个】。

  2. C++函数的占位参数,就是形参中只有数据类型,也可以设置默认值。

  3. C++中struct和class的唯一区别就是struct的访问权限默认是公有的,class则为私有。

  4. 对象的初始化及清理【即构造函数及构析函数】
    1、当类对象被创建时,程序至少会自动创建三个构造函数【无参构造、有参构造及拷贝构造】。
    2、类对象作为类成员被创建时,先调用对象成员的构造再调用类成员的构造,构析函数则相反。

  5. this指针:this指针指向被调用的成员函数所属的对象
    1、解决名称冲突
    2、在类的非静态成员函数中返回对象本身,即return *this;

  6. 空指针可以访问成员函数

  7. 常对象【声明对象前加const修饰符】只能调用常函数【成员函数后加const修饰符,常函数内不能修改成员属性】

  8. 友元,即使函数或者类能访问另一个类的私有变量
    1、全局函数做友元:在该类中声明全局函数,并且在前面加上friend
    2、类做友元:在该类中声明要访问的类,并且在前面加上friend
    3、成员函数做友元:在该类中声明成员函数,并且在前面加上friend

  9. 继承:
    1、先调用父类构造函数再调用子类构造函数,构析函数则相反。
    2、子类调用父类中的同名成员(变量、函数),需要加作用域;调用子类本身中的时,正常调用。
    3、C++中允许多继承

  10. 字符数组可以初始化直接赋值,但是不能声明后再直接赋值,但可以用strcpy()函数,如:

char str1[40] = "fjkahfhahkfhah";   //正确
/
char str2[40];
str2[40] = "aihfihncsajkhjk";  //错误
/
char str3[40];
strcpy(str3,"aihfihncsajkhjk");  //正确

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

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

相关文章

wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法

今天WordPress主题站简单介绍一下WordPress系统中用户信息获取方式&#xff0c;今天就讲讲使用接口方式获取WordPress用户信息的方法。接口文件如下&#xff1a;if (POST ! $_SERVER[REQUEST_METHOD]) {header(Allow: POST);header(HTTP/1.1 405 Method Not Allowed);header(Co…

结构体内存拷贝的两种方法

结构体内存拷贝的两种方法前言内容总结前言 最近看一些代码&#xff0c;发现内存拷贝的两种方式&#xff0c;下面我就来介绍一下两种方式。 内容 首先定义一个结构体processorHead.h&#xff1a; #pragma pack(1)typedef struct {short b;int c;long long d; }DATA;#pragma…

大学物理实验长度的测量实验报告_大学物理实验教案长度和质量的测量两篇

大学物理实验教案长度和质量的测量两篇篇一&#xff1a;大学物理实验教案4--长度测量大学物理实验教案实验目的&#xff1a;1&#xff0e;掌握游标卡尺、螺旋测微计和移测显微镜的测量原理和使用方法。 2&#xff0e;根据仪器的精度和有效数字的定义&#xff0c;正确记录原始数…

Linux命令应用大词典-第25章 备份与还原

25.1 mkisofs:创建ISO9660/Joliet/hfs文件系统转载于:https://www.cnblogs.com/tqtl911/p/8661006.html

C++灵魂->指针

C灵魂->指针地址指针野指针空指针 【内存动态分配】指针变量的运算&#xff08;&#xff0c;-&#xff0c;&#xff0c;--&#xff09;指针与一维数组地址 计算机将内存以单个字节为单位分开&#xff0c;并对每个字节进行唯一性编号&#xff0c;那么这个编号就是地址。 取…

cpython cython_python – 优化Cython中的字符串

我建议你在cpython.array.arrays上进行你的操作.最好的文档是C API和Cython源码,我太懒了链接了.from cpython cimport arraydef cfuncA():cdef str acdef int i,jfor j in range(1000):a .join([chr(i) for i in range(127)])def cfuncB():cdef:str aarray.array[char] arr,t…

团队协作小结

0.前提&#xff1a;协作目标保持一致&#xff0c;目标理解一致。 1.量化工作内容&#xff0c;以工作量算&#xff0c;可以适当结合成员自身特点划分内容。 2.职责明确&#xff0c;工作块必须有一名负责人&#xff0c;不要搞多人化&#xff0c;防止责任推诿。 转载于:https://ww…

TCP解决粘包问题(结构数据封包拆包)

TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言 TCP协议(Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;即TCP采用字节流的方式&#xff0c;以字节为单位传输字节序列。 如果简单的发送长串的数据流&#xf…

mac下nvm_mac中nvm的安装和使用

nvm 是 Mac 下的 node 管理工具&#xff0c;如果是管理 Windows 下的 node&#xff0c;可以使用 nvmw 或 nvm-windows 。一、若电脑中已安装node,需先卸载。参考学习的文档&#xff1a;http://blog.csdn.net/zjuwwj/article/details/72805671npm ls -g --depth0# 查看已经安装在…

求交错序列前N项和(15 分)

7-2 求交错序列前N项和&#xff08;15 分&#xff09; 本题要求编写程序&#xff0c;计算交错序列 1-2/33/5-4/75/9-6/11... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中输出部分和的值&#xff0c;结果保留三位小数。 输入样例: 5输出样例: 0.…

拆包--缓冲区查找包头及包尾偏移

缓冲区查找包头及包尾偏移前言一、采用动态数组QByteArray的自带函数二、采用字节对比方法测试代码前言 根据前面所讲的内容封包拆包&#xff0c;当将网络中的数据读出存储在自定义缓冲区QByteArray中&#xff0c;则对数据包进行拆分。则首先要进行的工作就是找到包头的位置及…

5自适应单页源码_超详细!如何建立一个CPA单页网站,附高转化CPA模板源码

做CPA的老手一般都会建立一个CPA单页站&#xff0c;用来提升转化&#xff0c;提高推广质量。今天教大家搭建一个完整的CPA单页站搭建一个网站需要3样东西&#xff1a;域名服务器网站源码一、购买域名域名就是你网站的地址&#xff0c;建议从万网购买就可以&#xff0c;比较方便…

20154319 《网络对抗技术》后门原理与实践

一、实验说明 任务一&#xff1a;使用netcat获取主机操作Shell&#xff0c;cron启动 (0.5分) 任务二&#xff1a;使用socat获取主机操作Shell, 任务计划启动 (0.5分) 任务三&#xff1a;使用MSF meterpreter&#xff08;或其他软件&#xff09;生成可执行文件&#xff0c;利用…

强制类型转换的取整及四舍五入取整

强制类型转换取整相关前言取整方法例&#xff1a;(signed int)double四舍五入取整前言 开发中一般运算过程都采用浮点类型数据以免出现运算不精确的错误&#xff0c;而当运算结果需要时整型的时候就需要对浮点类型的结果进行取整处理&#xff0c;而取整的方法有向上取整&#…

github电脑壁纸_GitHub - githubtaotao/bing-wallpaper: Bing每日壁纸,自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事...

Bing每日壁纸发布一个开源小软件&#xff0c;Bing每日壁纸。该小软件可以自动获取Bing的精美图片设置为壁纸&#xff0c;并且支持随机切换历史壁纸&#xff0c;查看壁纸故事。欢迎大家下载使用&#xff0c;点star&#xff01;有问题请留言或者提issue。想了解技术原理的请看 技…

关于字节对齐

关于字节对齐前言意义自定义字节对齐存储空间内存读取效率平台适应性结论前言 计算机中的内存空间大小是以字节&#xff08;byte&#xff09;为基本单位划分的&#xff0c;从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0c;而计算机并非逐字节大小读写内存…

c++中的多线程

使用 std::thread 时需要包含 #include<thread> 头文件&#xff0c;定义了表示线程的类、用于互斥访问的类与方法等。 参考网址&#xff1a; https://blog.csdn.net/liuker888/article/details/46848905https://blog.csdn.net/fengbingchun/article/details/73393229成员…

C++ reverse memcpy

C reverse memcpy前言基于QT的测试样例结果前言 C 实现翻转memcpy 基于QT的测试样例 代码如下&#xff1a; #include <iostream> #include <QtCore/QCoreApplication> #include <QDebug>using namespace std;void *reversememcpy(void *out, const void *…

打架程序_学生打架不知道怎么处理?一般程序了解下,对你或许有帮助

很多新老师&#xff0c;对处理学生问题的步骤其实还不是很了解&#xff0c;一遇到学生问题就很苦恼&#xff0c;用的方法很多&#xff1a;或劝、或骂、或赏、或罚&#xff0c;但总是觉得不得要领。今天我想通过昨天我处理的一个实例&#xff0c;针对性的聊一聊这个问题。希望对…

提高应用程序稳定的小内容

用于提高应用程序稳定的小小要点要点内容&#xff1a;要点内容&#xff1a; 动态内存分配完后&#xff08;new&#xff09;&#xff0c;注意一个使用完的内存要对应一个delete&#xff0c;防止内存泄漏。当用QByteArray等数组结构来存储缓存时&#xff0c;缓存被读取后注意要清…