C++基础知识

  • 前言
  • 基础

前言

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

基础

  1. C++对于内存的控制管理比java要有更多要求,因此C++对于变量的创建是需要思考的,变量存在的意义就是方便管理内存,而创建变量就是申请一块合适的内存空间。
  2. 如何给变量申请合适的内存空间,就需要定义需要的数据类型,C++数据类型所占的内存大小(字节)如下所示,而具体到用有符号数还是无符号数就看具体需求:
数据类型 占用内存空间(字节)
整型
short 2
int 4
long 4
long long 8
浮点型
float 4
double 8
字符型
char 1
布尔类型
bool 1
  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");  //正确

从java到C++入门相关推荐

  1. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  2. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  3. java程序员入门先学什么开发者工具

    学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率.更优雅的写代码.由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得 ...

  4. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  5. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  6. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记

    <Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...

  7. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  8. Java学习从入门到精通

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

  9. 大白话说Java泛型:入门、使用、原理

    文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java泛型:入门.使用.原理> 远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都 ...

  10. Java要怎么入门?初学者要怎么学?

    很多人都向往Java广阔的从业前景,想精通Java技术,找到好工作,却苦于不懂Java知识.那么,Java开发怎么入门?其实零基础学习Java开发并没有想象中的那么难.下面,小千整理了Java的入门学 ...

最新文章

  1. O(n^2) 级别的排序算法
  2. error C3861: “setw”: 找不到标识符
  3. 异常处理——Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.3.4/lib/hive-comm
  4. (5)hibernate多对一,一对多,一对一,多对多
  5. CSS3 实用技巧:制作三角形
  6. Angular的NgModule
  7. it行业里 有哪些职位 职业寿命 比较长_计算机行业范围广泛,这5个高薪IT专业,月薪过万,女生也适合...
  8. SQL Server如何制造大量测试数据
  9. 被罚 50 亿后,Google 不再强制绑定 Android 默认引擎!
  10. libsvm3.22——使用指南
  11. 向Yahoo Mail的主页学习
  12. 计算机为什么使用二进制编码,计算机为什么使用二进制
  13. Excel如何在当前行的下方插入新行?
  14. 论文笔记 NLPCC 2016|A Convolution BiLSTM Neural Network Model for Chinese Event Extraction
  15. MT6753和MT6737 4G和以太网同时使用问题,测试记录
  16. 一个合格的程序员所具备的素质和修养
  17. 用C语言去判断一个字符串是否为回文字符串(简单明了)
  18. 一个Android下ping的简单工具类
  19. 英雄联盟轮播图自动轮播
  20. 深入jvm之对象如何进入老年代

热门文章

  1. ASP.NET 页面生存周期概览
  2. html中内联元素和块级元素的区别(整理版)
  3. SpringBoot集成thymeleaf增删改查示例
  4. 拖拽升空的Android小火箭
  5. css属性基础以及wxss——居中,渐变色边框,圆角边框,横向布局,重叠div,div固定在底部,input的无边框显示下划线
  6. Oracle常见错误
  7. easyui下拉框option写死_JavaScript_jQuery+easyui中的combobox实现下拉框特效,1.第一种写法:Input框中显示: - phpStudy...
  8. java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态
  9. jwt, json web token
  10. 虚拟机的网络连接模式