首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++初阶】--- C++入门(

目录 一、C++背景及简要介绍 1.1 什么是C++ 1.2 C++发展史 1.3 C++重要性 二、C++关键字 三、命名空间 2.1 命名空间定义 2.2 命名空间使用 四、C++输入...& 输出 一、C++背景及简要介绍 1.1 什么是C++ C语言是结构化和模块化语言,适合处理较小规模程序。...在1982年,Bjarne Stroustrup博士在C语言基础引入并扩充了面向对象概念,发明了一种新程序语言。为了表达该语言与C语言渊源关系,命名为C++。...表达式,auto返回值类型推导,二进制字面常量等 C++ 17 在C++11做了一些小幅改进,增加了19个新特性,比如:static_assert()文本信息可选,Fold表达式用于可变模板,if...cin >> a; cin >> b >> c; cout << a << endl; cout << b << " " << c << endl; return 0; } 实际

3300
您找到你想要的搜索结果了吗?
是的
没有找到

Linux用Eclipse写C++程序

我厂很多同学使用VC在windows编写linuxC/C++程序,然后再传开发服务器,然后再编译和调试。如果有修改,可能会直接用vi去改了,然后再把源代码同步回来。其实这样做挺折腾。...也有大神全盘vim设置emacs写,想来也是极好。 但是,也有另外一个方案,就是在 Linux安装个写C/C++程序IDE,这样可以直接编写、编译、运行、上传SVN,非常方便。...其实要做到这点,也很简单: 你需要一个虚拟机来运行一个带GUILINUX,这样IDE才能运行起来,当然也可以直接在开发服务器安装GUI程序,然后WINDOWS办公PC这里设置个SSHX转发,装个...注意Eclipse有很多个包,如果只写C/C++程序,就直接下Eclipse CDT这个套件好了,省了还要下支持JAVA开发东西。 ?...Theme,选择一个喜欢颜色方案 如果你使用gtest来做单元测试,可以装个“C/C++ Unit Testing Support“,这样就可以直接在IDE里面运行和调试单元测试了。

3.4K70

C++:28 --- C++内存布局(

1 类布局 本节讨论不同继承方式造成不同内存布局。 由于C++基于C,所以C++也“基本”兼容C。...特别地,C++规范在“结构”使用了和C相同,简单内存布局原则:成员变量按其被声明顺序排列,按具体实现所规定对齐原则在内存地址对齐。...所有的C/C++厂商都保证他们C/C++编译器对于有效C结构采用完全相同布局。...有C++特征C结构 当然了,C++不是复杂CC++本质是面向对象语言:包 含 继承、封装,以及多态 。原始C结构经过改造,成了面向对象世界基石——类。...除了成员变量外,C++类还可以封装成员函数和其他东西。然而,有趣是,除非 为了实现虚函数和虚继承引入隐藏成员变量外,C++类实例大小完全取决于一个类及其基类成员变量!

1.1K20

C++】vector(

元素进行访问,但它大小是可以动态改变,而且这个改变可以被容器自动处理 因为vector使用动态分配数组来存储它元素,当新元素插入时候需要扩容,一般来说进行扩容都是按照倍数扩容,在VS以1.5...倍扩容,在gcc以2倍扩容,这样后来几位数字插入复杂度就很低了 与其他动态序列容器相比,vector在访问元素时候更加高效,在末尾添加和删除元素相对高效,对于其它不在末尾删除和插入操作,效率更低...,其底层实际就是一个指针或被封装指针,vector迭代器就是原生态指针T*,因此迭代器失效就是迭代器底层对应指针所指向空间销毁了,而使用一块已经被释放空间,如果继续使用已经失效迭代器,程序可能会崩溃...而vector扩容操作是开辟新空间,拷贝数据到新空间,销毁旧空间,而寄存器it指向位置是旧空间位置,所以会出现操作已经被释放空间问题 解决方法是扩容之后重新赋值it ②指定元素删除操作 void...杨辉三角问题 对于这个杨辉三角问题,我们需要一个二维数组,用C语言来写的话稍微复杂一些,需要malloc一个指针数组,然后指针数组指针指向一个一维数组 对于C++来说,我们需要一个vector

18010

C++】继承()

显示访问) 3.需要注意是如果是成员函数隐藏,只需要函数名相同就构成隐藏 4.注意在实际中继承体系里面最好不要定义同名成员 ---- 因为父类和子类在不同作用域,所以可以分别在父子类中创建相同成员变量...,但是这样只会访问子类成员变量 ---- 若想传是父类_num,需要指定作用域 ---- 与函数重载区别 fun函数,看似很像进行函数重载,但是函数重载是在同一个作用域下 而子类B是继承父类...name属于父类成员,所以要去调用父类构造函数初始化 ---- 如果不写,会在初始化列表去调用父类默认构造函数(自己实现全缺省构造函数) 拷贝构造函数 子类拷贝构造需要调用父类拷贝构造...友元关系不能被继承 有一个函数,是你父类友元,不是你子类友元 ---- Display作为父类友元函数,可以访问父类成员变量,但是不能访问子类成员变量 7....但是实际依旧是不合理,若再传入年龄、电话、住址等信息,由于这些信息都是相同,只有名字不同,相当于把名字多存了,就会造成数据冗余,本质为空间浪费

27310

C++语言特点 【

C++语言是在C语言基础发展而来,同时它又支持面向对象程序设计,它主要具有以下特点: 1 继承自C语言优点:语言简洁、紧凑,使用方便、灵活;拥有丰富运算符;生成目标代码质量高,程序执行效率高...3 同时支持面向过程和面向对象方法:在C++环境下既可以进行面向对象程序设计,也可以进行面向过程程序设计。因此它也具有数据封装和隐藏、继承和多态等面向对象特征。...支持面向对象编程机制,如信息隐藏、封装函数、抽象数据类型、继承、多态、函数重载、运算符重载、乏型编程(模板) 兼容C语言,籍此提供一个从CC++平滑过渡。...C++语言既保留了C语言有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程支持,具有强大编程功能,可方便地构造出模拟现实问题实体和操作;编写出程序具有结构清晰、易于扩充等优良特性,...用C++编写程序可读性好,生成代码质量高,运行效率仅比汇编语言慢10%~20%。 4 C++设计成无需复杂程序设计环境。C++设计成静态类型、和C同样高效且可移植多用途程序设计语言。

1.1K21

使用 Visual Studio Code 开发 LINUX C++ 应用

以前开发 Linux 服务器程序,会有通过 samba 进行文件保存,或者先在 windows 编译测试,然后传到 Linux 服务器重新编译测试。这些都不太直接,而且调试起来比较困难。...现在很多 IDE 都支持直接编写 LINUX 程序了,本文介绍 VSCode 如何完成这个工作。...配置连接到 LINUX 服务器,点击“远程资源管理器”,然后选 SSH TARGERTS “+”号,输入一行 ssh 命令,就会打开一个登录配置文件,你可以自己编辑多个需要登录主机 ?...选择已经配置好服务器右边“打开”按钮,会连接到远程服务器,并且自动在LINUX服务器安装一些 VS CODE 所需要软件,这需要你远程服务器可以连接到公网上 ?...在远程服务器安装 C++ 相关插件: C/C++ C++Intellisense ?

3.7K31

C++入门】—— C++入门 ()_命名空间

本篇主要内容: C++学习前言 C++入门知识 什么是C++: 1982年,Bjarne Stroustrup博士在C语言基础引入并扩充了面向对象概念,发明了一种新程序语言。...,二进制字面常量等 C++17 在C++11做了一些小幅改进,增加了19个新特性,比如:static_assert()文本信息可选,Fold表达式用于可变模板,if和switch语句中初始化器等...:比如Lambda支持模板、范围for支持初始化等 C++23 制定ing C++还在不断向后发展 关于C++23讨论: C++23 1.2 C++重要性 语言使用广泛度: C/C++...C++入门知识 (C++兼容C语言所有语法) 2.1 命名空间 在C/C++中,变量、函数和后面要学到类都是大量存在,这些变量、函数和类名称将都存在于全局作用域中,如果我们取变量名和库中变量名一样就会发生冲突...总结 在本章节中,我们介绍了C++发展史及其在社会上重要意义,在C++主要入门知识,我们又介绍了命名空间和C++输入和输出,而命名空间解决了C语言遗留下来问题。

11210

C++】string类(

s) 用C格式字符串构造字符串 string(const string& s) 拷贝构造函数 string(size_t n,char c) 字符串中包含n个字符c void test() {...都是将字符串中有效字符个数改到n个, //不同是当字符个数增多时,resize(size_t n)用0来填充多出元素空间, //resize(size_t n,char c)用c字符填充多出元素空间...,rend记录是第一个有效字符前一个位置,通过++实现逆向输出 } (4)string类对象修改 函数名称 功能说明 operator+= 在字符串后追加字符串 c_str 返回C格式字符串 find...; cout << s1 << endl; //c_str测试 cout <<s1.c_str() << endl; //c_str就是将c++格式转化为c语言格式,这样字符串就可以用C...简单来说就是在用之前不开空间,在真正要修改和写入时才开辟空间,可以减少空间浪费,它是在浅拷贝基础增加了引用计数方式实现 引用计数:用来记录资源使用者个数,在构造时,将资源计数给成1,每增加一个对象使用该资源

8510

C++之引用(

前言 今天要介绍C++一个新概念——引用。 ---- 一、引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用变量共用同一块内存空间。...生活中例子:水浒传里宋江,他父母给他取名字是宋江,江湖人称他为及时雨(这里及时雨就是对宋江这个人引用)。 编程例子: 其中a和ra代表是一个东西。...%d\n", b); printf("c地址:%p\n", &c); printf("c = %d\n", c); return 0; } 因此,引用是不能完全代替指针,因为指针是可以指向不同实体...因为在发生类型转换(无论是显示类型转换还是隐式类型转换或者整型提升等),过程中都会产生一个临时变量(类型变换不会影响原变量类型),C++标准规定临时变量具有常性(常性就是不能改变意思,常量就具有常性...总结 以上就是今天要讲内容,本文介绍了 相关概念。本文作者目前也是正在学习C++相关知识,如果文章中内容有错误或者不严谨部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

26940

MacC++

用惯Windows同学可能刚开始用Mac时候并不知道如何写C++,我刚开始在MacC++时候也遇到过这个困扰,Mac并没有Windows上自己用习惯Visual C++,下面我分享一下个人在写...C++时候所用两个方法:       1.使用Xcode, 直接App Store搜索下载即可, ?...,Language选择C++,点击next。...2.接下来介绍另一种方法,对于只是学习来说,我认为不必要用那么庞大IDE来学习,Mac自带终端工具就行,使用方便,不占内存,我平时也是用shell来学习C++。...接着打开终端(可以在状态栏搜索功能直接搜索终端即可点击打开),输入cd Desktop(我把.cpp文件放在桌面)→ g++ test.cpp(运行名为test.cppC++文件)→然后.cpp所在位置会出现名为

2.4K90

C++之模板(

前言 本文介绍了C++模板基础概念,简单介绍了泛型编程,模板,以及模板中函数模板与类模板等相关概念。 ---- 一、泛型编程 如何实现一个通用交换函数(任何类型参数都可以使用)呢?...= 10.1; double d = 20.1; Swap(a, b); Swap(c, d); cout << a << "-" << b << endl; cout << c << "-"...在C++中,存在着这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料铸件(即生成具体类型代码)。 泛型编程:编写与类型无关通用代码,是代码复用一种手段。...= 10.1; double d = 20.1; ADD(a, b); ADD(c, d); cout << a << "-" << b << endl; cout << c << "-" <...总结 以上就是今天要讲内容,本文介绍了C++模板基础概念。本文作者目前也是正在学习C++相关知识,如果文章中内容有错误或者不严谨部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

39940

C++核心编程()

来源:CSDN|晚风花间寺中人 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++核心和精髓。...1 内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数参数值...+中主要利用new在堆区开辟内存 示例: int* func() { //利用new关键字,也可以将数据开辟到堆区 //指针 本质也是局部变量,放在栈,指针保存数据是放在堆区 int...本质:引用本质在c++内部实现是一个指针常量....生活中我们买电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全 C++面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前清理数据设置。

1.8K30

Linux编译C++

创建C++编译环境 安装VIM PLUS 为什么安装VIM PLUS: 可以为我们提供良好编译环境,高亮代码,智能提示等等~ git clone https://github.com/chxuan...下调试工具。...或许,各位比较喜欢那种图形界面方式,像VC、BCB等IDE调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z优点是具有修复网络断点以及恢复链接等功能。...LLDBLLDB(Low Level Debug)是Apple正在迁移LLVM工具套件(包括Clang)一部分具有REPL (Read-Eval-Print Loop,交互式解释器)、C++ 和 Python...g++ main.cpp 相当于g++ -c main.cpp 目的是生成机器码文件即main.o和func.o(这里有个误区,小白往往把**.o**文件当初可执行文件,这是绝对错误!!!)

22.8K50

C++ 线程池实现(

引言 最近工作开始使用C++,于是想用C++实现一个线程池。这里就分两篇文章来记录一下实现过程,本篇主要为理论篇,具体实践篇,等代码功能稳定以后再总结。 2....简介 本部分从线程池作用到线程池原理介绍。想要实现具体线程池,需要先知道线程池有什么作用,然后再去学习他原理,最终用代码实现出来。...线程池作用 在具体代码中,经常会遇到以下场景: ① 监听机制:在代码正常运行时,需要随时监听主线程状态或者某个变量状态,一旦状态变化立刻需要处理。...在线程池中只存在几个固定线程,由线程池来维护,等待调度器派发已存在空闲线程去执行对应任务。 由此,便实现了线程一次创建多次使用功能,从而避免了短时间内任务时创建与销毁线程代价。...线程池不仅能保护资源充分利用,还能保证不被过分调度。 线程池原理 线程池在初始化时,会先创建固定数量线程;具体任务会放在任务队列中,类似于生产者-消费者概念。

1.5K20

C++】类和对象(

class默认访问权限是private,struct为public 访问限定符只有在编译时有用,用于规范代码,在运行时没有区别 关于第(4)条,因为C++要兼容C语言,所以struct在C++中既可以做结构体又可以定义类..._来和形参进行区分,这样会搞很难受,在C++中引入this来解决这个问题,C++编译器给每个非静态成员函数增加了一个隐藏指针参数,让该指针指向当前对象,在函数体中所有“成员变量”操作,都是通过该指针去访问...+实现栈 C++实现栈是学习C++一个很重要步骤,他能够让我们看清C语言与C++之间差异,这里有C语言实现C++中通过类可以将数据以及操作数据方法进行完美结合,通过访问权限可以控制那些方法在类外可以被调用...和C语言相比C++更加简洁,而且使用接口也更加容易理解 十、小结 现在对于面向对象和面向过程这两个编程方法应该有一定了解了,因为我们目标用户可能不懂C语言,这样一来使用C语言程序目标用户没办法维护...,但经C++封装类只需要提供接口,举个例子,比如计算器中加法,对于C++来说我只要提供一个加法接口,然后输入两个数字就可以得出答案,但对于C语言来说,我需要整个程序,不然我不知道如何使用,这就是它们差别

5710

C++类和对象(

---- 前言 C++在原C语言基础新增了面向对象(Object-Oriented)思想,使其从一门关注解题方法与过程语言转变为关注解题对象语言,对于C++来说,万物皆可是对象,下面跟随我脚步...、C#,当然还有基于C语言C++ 面向过程适用单片机、嵌入式、驱动开发等对效率要求高领域 面向对象多用于服务端等大型项目开发 面向对象三大特性: 封装、继承、多态 ,本文及后续几篇文章中主要是介绍...来进行类定义 C语言结构体中无法定义函数,且默认所有成员为公有 C++类中支持定义函数,将其称为成员函数,并且类中所有成员默认为私有 //C语言 struct C { int add(int x..., int y); //报错,C语言结构体中不允许函数声明 }; 下面来看看C++实现 //C++ struct CPP { int add(int x, int y); //成功,C++struct...,因为此时 this 指针为空指针 ---- 总结 以上就是类和对象(全部内容了,我们简单了解面向过程和面向对象区别,学习了类各种特性,初步理解了C++封装实现,最后还知道了 this 指针存在

12410

C++C++11中常见语法()

C++11 一、C++11简介 在 2003 年 C++ 标准委员会曾经提交了一份技术勘误表(简称TC1),使得 C++03 这个名字已经取代了 C++98 称为 C++11 之前最新 C++ 标准名称...从 C++0x 到 C++11,C++ 标准10年磨一剑,第二个真正意义标准珊珊来迟。...C++11来源:1998年是 C++ 标准委员会成立第一年,本来计划以后每 5 年视实际需要更新一次标准,C++ 国际标准委员会在研究 C++03 下一个版本时候,一开始计划是 2007 年发布...但是到06年时候,官方觉得2007年肯定完不成 C++07,而且官方觉得 2008 年可能也完不成。最后干脆叫C++ 0x。x 意思是不知道到底能在07还是08还是09年完成。...结果 2010 年时候也没完成,最后在2011年终于完成了 C++ 标准。所以最终定名为C++11。

15510

CC++在const用法区别

首先,CC++在大体结构不同,却在语法上相同。  所以在使用时候,我们会时常遇到一些莫名其妙问题,觉得语法是正确,但是编译时候却出现一个红色 error!...&var; 9 *p = 1; 10 printf("%d\n",var); 11 getchar(); 12 }  答案很定不用说:    1      原因也很简单:  C弱类型语言...,C++是强类型语言。  ...我们可以看到,var值,没有改变!  原因是C++是强类型语言,C++数据类型更加严格与苛刻 !      ...当然对于C++为何会出现指针值为*p=3而var=10这样情况,其实,*P所指常量地址真实内存已经修改了,但是编译器并没有从内存地址中取值,而是直接从寄存器中取值,所以var=10依旧表面上依旧没有发生什么改变

72240
领券