从java到C++入门
C++基础知识
- 前言
- 基础
前言
当初为了赶一波互联网热潮自学了java,如今因为需要就从java转向C++开发,于是就有了java到C++入门,每次的学习我都会记录一下C++的学习历程。
基础
- C++对于内存的控制管理比java要有更多要求,因此C++对于变量的创建是需要思考的,变量存在的意义就是方便管理内存,而创建变量就是申请一块合适的内存空间。
- 如何给变量申请合适的内存空间,就需要定义需要的数据类型,C++数据类型所占的内存大小(字节)如下所示,而具体到用有符号数还是无符号数就看具体需求:
数据类型 | 占用内存空间(字节) |
---|---|
整型 | |
short | 2 |
int | 4 |
long | 4 |
long long | 8 |
浮点型 | |
float | 4 |
double | 8 |
字符型 | |
char | 1 |
布尔类型 | |
bool | 1 |
常数,用于记录程序中不可改变的数据,C++有两种定义方法:
1、#define 宏定义
2、const 修饰词数据输入输出:
1、cin>>变量 获取键盘输入
2、cout<<数据 输出到控制台C++中的条件和循环语句就和java几乎一样
指针见C++灵魂->指针
结构体:属于自定义数据类型,可以存储不同的数据类型
语法:struct 结构体名称 {结构体成员列表};
- 内存四区(代码区、全局区、栈区、堆区):不同区域存放不同的数据,有不同的生命周期,便于灵活管理。
程序运行前,编译后:
1、代码区存放CPU执行的机器指令 ,有共享和只读特性。
2、全局区存放全局变量、静态变量、字符串常量和const修饰的全局变量(全局常量)
程序运行之后:
1、栈区(编译器自动分配释放)存放局部变量和const修饰的局部变量(局部常量)
(1)不要返回局部变量的地址
(2)不要返回局部变量的引用
2、堆区(程序员分配释放,否则程序结束后由系统释放)
(1)由new关键字来将数据开辟到堆区新内存
(2)由delete关键字将内存地址释放(释放数据时delete[ ]) - 引用:给变量其别名
例如:数据类型 &别名 = 原名;
函数参数传递方法:
1、值传递:每次传递都会复制数据,会耗用内存;形参不会改变实参。
2、地址传递(指针),可以减少占用内存,但会可能会造成原数值的修改,可以在传入时加上const防止修改数据的误操作。
3、引用传递,可以简化指针,和地址传递效果一样,同样可以在传入时加上const防止修改数据的误操作。引用课程里的对于引用的本质讲解
引用的注意事项:1、引用必须初始化;2、引用不可更改
C++函数的形参可以默认值【注:当其中一个形参有默认值,则该形参的右侧参数都得有默认值;函数声明和实现中只能写一个】。
C++函数的占位参数,就是形参中只有数据类型,也可以设置默认值。
C++中struct和class的唯一区别就是struct的访问权限默认是公有的,class则为私有。
对象的初始化及清理【即构造函数及构析函数】
1、当类对象被创建时,程序至少会自动创建三个构造函数【无参构造、有参构造及拷贝构造】。
2、类对象作为类成员被创建时,先调用对象成员的构造再调用类成员的构造,构析函数则相反。this指针:this指针指向被调用的成员函数所属的对象
1、解决名称冲突
2、在类的非静态成员函数中返回对象本身,即return *this;空指针可以访问成员函数
常对象【声明对象前加const修饰符】只能调用常函数【成员函数后加const修饰符,常函数内不能修改成员属性】
友元,即使函数或者类能访问另一个类的私有变量
1、全局函数做友元:在该类中声明全局函数,并且在前面加上friend
2、类做友元:在该类中声明要访问的类,并且在前面加上friend
3、成员函数做友元:在该类中声明成员函数,并且在前面加上friend继承:
1、先调用父类构造函数再调用子类构造函数,构析函数则相反。
2、子类调用父类中的同名成员(变量、函数),需要加作用域;调用子类本身中的时,正常调用。
3、C++中允许多继承字符数组可以初始化直接赋值,但是不能声明后再直接赋值,但可以用strcpy()函数,如:
char str1[40] = "fjkahfhahkfhah"; //正确
/
char str2[40];
str2[40] = "aihfihncsajkhjk"; //错误
/
char str3[40];
strcpy(str3,"aihfihncsajkhjk"); //正确
从java到C++入门相关推荐
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
[JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...
- 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序
本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...
- java程序员入门先学什么开发者工具
学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率.更优雅的写代码.由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得 ...
- Java学习从入门到精通的学习建议
想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...
- JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...
接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...
- 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记
<Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...
- Java学习从入门到精通-旧版
为什么80%的码农都做不了架构师?>>> Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...
- Java学习从入门到精通
Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...
- 大白话说Java泛型:入门、使用、原理
文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java泛型:入门.使用.原理> 远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都 ...
- Java要怎么入门?初学者要怎么学?
很多人都向往Java广阔的从业前景,想精通Java技术,找到好工作,却苦于不懂Java知识.那么,Java开发怎么入门?其实零基础学习Java开发并没有想象中的那么难.下面,小千整理了Java的入门学 ...
最新文章
- O(n^2) 级别的排序算法
- error C3861: “setw”: 找不到标识符
- 异常处理——Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.3.4/lib/hive-comm
- (5)hibernate多对一,一对多,一对一,多对多
- CSS3 实用技巧:制作三角形
- Angular的NgModule
- it行业里 有哪些职位 职业寿命 比较长_计算机行业范围广泛,这5个高薪IT专业,月薪过万,女生也适合...
- SQL Server如何制造大量测试数据
- 被罚 50 亿后,Google 不再强制绑定 Android 默认引擎!
- libsvm3.22——使用指南
- 向Yahoo Mail的主页学习
- 计算机为什么使用二进制编码,计算机为什么使用二进制
- Excel如何在当前行的下方插入新行?
- 论文笔记 NLPCC 2016|A Convolution BiLSTM Neural Network Model for Chinese Event Extraction
- MT6753和MT6737 4G和以太网同时使用问题,测试记录
- 一个合格的程序员所具备的素质和修养
- 用C语言去判断一个字符串是否为回文字符串(简单明了)
- 一个Android下ping的简单工具类
- 英雄联盟轮播图自动轮播
- 深入jvm之对象如何进入老年代
热门文章
- ASP.NET 页面生存周期概览
- html中内联元素和块级元素的区别(整理版)
- SpringBoot集成thymeleaf增删改查示例
- 拖拽升空的Android小火箭
- css属性基础以及wxss——居中,渐变色边框,圆角边框,横向布局,重叠div,div固定在底部,input的无边框显示下划线
- Oracle常见错误
- easyui下拉框option写死_JavaScript_jQuery+easyui中的combobox实现下拉框特效,1.第一种写法:Input框中显示: - phpStudy...
- java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态
- jwt, json web token
- 虚拟机的网络连接模式