小朋友学C++
海天一树
信息学奥赛研究。
展开
-
小朋友学C++:文件输入输出
前面介绍的程序,都是通过控制台或命令行窗口来输入输出的。更具体地讲,Codeblocks中输入输出数据的那个窗口叫做控制台窗口,DevC++则是调用命令行窗口进行输入输出。C语言使用scanf()/printf()函数来实现控制台/命令行窗口输入输出,C++使用cin/cout输入输出流来实现控制台/命令行窗口输入输出。当然,因为C++兼容C语言,所以C++中也可以使用scanf()/print...原创 2020-02-18 17:47:31 · 678 阅读 · 0 评论 -
安装VSCode并配置C++编程环境
一、下载并安装VSCode(1)从https://code.visualstudio.com/ 下载最新版的VSCode并安装。(2)安装的过程中,要勾选“需要添加到PATH”中。二、安装MinGWVSCode本身只是一款文本编辑器,可以编写C/C++或其他语言的代码,但是没法编译和调试。所以还需要安装相应语言的编译器和调试器。MinGW中包含了C语言编译器gcc.exe,C++编译...原创 2020-02-13 21:36:00 · 2031 阅读 · 0 评论 -
小朋友学C++(7):封装
面向对象有三个特征:封装、继承和多态。 本节主要讲解封装。所有的 C++ 程序都有以下两个基本要素: 函数:这是程序中执行动作的部分,它们被称为函数或方法。 数据:数据是程序的信息,会受到程序函数的影响,也叫属性。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。我们已经知道,类包含私有成员(private)、保护成...原创 2018-06-07 10:30:46 · 411 阅读 · 0 评论 -
小朋友学C++(3):类与对象
(一)类与对象类是由我们根据客观事物抽象而成,形成一类事物,然后用类去定义对象,形成这类事物的具体个体。比如小狗是一个类,你家的“旺财”则是小狗一个具体的对象。(二)属性与方法一般把类的数据成员称为类的属性,把类的函数成员称为方法。 比如小狗这个类吧,它的属性有身高、体长、体重、名字、年龄、性别等,它的方法有吃,走,跑,呼吸,吠等。 从这里也可以看出,属性都是静态的,而方法...原创 2018-06-07 10:29:04 · 496 阅读 · 0 评论 -
小朋友学C++(2):面向过程与面向对象
先用C++编写一个加法程序#include <iostream>using namespace std;int add(int a, int b){ return a + b;}int main(){ int x = 5, y = 10; int z = add(5, 10); cout << "x = " <&...原创 2018-06-07 10:28:41 · 1113 阅读 · 0 评论 -
小朋友学C++(1):Hello World!
在学C++之前,最好先学习一下C语言让我们先运行一段简单的代码,编译器可以使用 在线C++编译器 或 Xcode(苹果系统) 或Dev C++(Windows系统)。#include <iostream>using namespace std; int main(){ cout << "Hello World!" << endl;...原创 2018-06-07 10:27:51 · 4592 阅读 · 0 评论 -
小朋友学C++(22):cin与scanf,cout与printf的效率比较
一、生成测试数据先把1000万个测试数据写入data.txt中#include <iostream>#include <fstream>#include <ctime>using namespace std;const int num=10000000;int main(){ ofstream fout("data.txt")...原创 2018-06-13 15:14:21 · 1631 阅读 · 0 评论 -
小朋友学C++(21):命名空间
(一)先看一个简单的程序:#include <iostream>using namespace std;int main(){ int a = 1; cout << a << endl;}运行结果:1这里的第一行,#include好理解,iostream是输入输出流,包含了输入流istream和输出流ostr...原创 2018-06-13 15:13:47 · 640 阅读 · 0 评论 -
小朋友学C++(20):内联函数
一、何谓内联函数上一节课中,我们分析了这一段函数:template<class _Ty> inline _Ty _Pow_int(_Ty _X, int _Y) {unsigned int _N; if (_Y >= 0) _N = _Y; else ...原创 2018-06-12 14:03:43 · 253 阅读 · 0 评论 -
小朋友学C++(19):函数模板
先看一段微软实现math.h中求幂的源码template<class _Ty> inline _Ty _Pow_int(_Ty _X, int _Y) {unsigned int _N; if (_Y >= 0) _N = _Y; else _N...原创 2018-06-12 14:03:11 · 479 阅读 · 1 评论 -
小朋友学C++(18):标准库vector类
vector(向量)是 C++中的一种数据结构,也是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。一、定义和初始化vector v1; // T为类型名,比如int, float, string等 vector v2(v1); // 将v1赋值给v2 vector v3...原创 2018-06-12 14:02:32 · 255 阅读 · 0 评论 -
小朋友学C++(4):public, protected, private
面向对象有三大特征:封装、继承、多态。(具体会在之后的课程里讲)C++用三个关键词来表示访问范围:public, protected, private。 public和private作用就是实现封装。类外的代码可以访问public成员而不能访问private成员;private成员只能由类成员访问。 protected的作用则是实现继承。protected成员可以被派生类(也叫子类)对象访...原创 2018-06-07 10:29:31 · 269 阅读 · 0 评论 -
小朋友学C++(5):构造函数
构造函数,作用是完成对象的初始化工作。 可类比于:int a = 1;这里是给变量a赋初值。构造函数是一种特殊的函数,首先构造函数名与类名是完全一致的,其次构造函数没有类型。构造函数可以不带参数,也可以带参数。#include <iostream>using namespace std;class Dog{public: string name;...原创 2018-06-07 10:29:53 · 254 阅读 · 0 评论 -
小朋友学C++(6):this指针
this指针是一个隐含于类中的特殊指针,指向对象本身。也就是说对象一旦被创建,this指针也就存在了。 就好比你的名字叫做Teodoro,别人说你的时候用的是Teodoro,但是你说你自己的时候,用的是“我”。 这个“我”,在C++和Java中,是用this来表示的。而在Python和Objective-C(苹果的开发语言)中,则用self来表示。程序1#include <...原创 2018-06-07 10:30:18 · 227 阅读 · 0 评论 -
小朋友学C++(47):标准库与标准模板库
C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平;(4)良好的编程风格...原创 2019-04-07 20:38:26 · 823 阅读 · 0 评论 -
小朋友学C++(46): lower_bound()和upper_bound()
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bou...原创 2019-02-05 20:28:38 · 309 阅读 · 0 评论 -
小朋友学C++(44):运算符重载
咱们定义一个结构体Point,用来表示平面上的点:struct Point{ int x; int y;};咱们经常用到的运算符“+”、“-”、“*”、“/”,只能用于int, float, double, char类型的变量之间。两个Point的变量,并不能使用这些运算符来进行运算。在C++中,咱们可以通过重载运算符(operator)的方法,来实现一些复杂数据类型变...原创 2019-01-09 23:36:07 · 287 阅读 · 0 评论 -
小朋友学C++(45):指针与数组的关系
数组名称实际上相当于一个指针,指向数组第一个元素所在的地址。例1 用指针方式输入输出数组元素#include <iostream>using namespace std;int main(){ int n; cin >> n; int a[n]; for(int i = 0; i < n; i++) { ...原创 2019-01-24 22:37:18 · 251 阅读 · 0 评论 -
小朋友学C++(24):实现简易计算器
一、需求编写一个简易计算器,能实现最基本的加减乘除四则运算。二、代码实现#include <iostream>using namespace std;int main(){ double num1,num2; char op; // 运算符号 char flag; // 是否继续运算,'Y'或'y'表示是,'N'或'n'表示否 while(true) {...原创 2018-12-05 16:25:11 · 686 阅读 · 0 评论 -
小朋友学C++(10):子类构造函数调用父类构造函数
从哲学层面来看,子类会继承父类除private以外的所有成员。 因为构造函数是公有的,所以理所当然地会被子类继承。程序1:#include <iostream>using namespace std;class Shape{public: Shape() { cout << "Shape's constructor ...原创 2018-06-07 10:31:59 · 2886 阅读 · 0 评论 -
小朋友学C++(9):构造函数的默认参数
构造函数可以预先赋一个初值,其作用是:在构造函数被调用时,省略部分或全部参数,这时就会使用默认参数代替实参。程序:#include <iostream>using namespace std;class Rectangle{private: int width; int height; public: Rectangle(int w = ...原创 2018-06-07 10:31:35 · 255 阅读 · 0 评论 -
小朋友学C++(8):继承
先编写程序:#include <iostream>using namespace std;class Animal{protected: float weight;public: void setWeight(float w) { weight = w; } float getWeight() {...原创 2018-06-07 10:31:11 · 276 阅读 · 0 评论 -
小朋友学C++(17):析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~A( )。以区别于构造函数。 与构造函数一样,析构函数不能有返回值。不同...原创 2018-06-12 14:01:49 · 262 阅读 · 0 评论 -
小朋友学C++(16):C++创建对象的3种方式
先看程序:#include <iostream>using namespace std;class A{private: int n;public: A(int m) { n = m; cout << "Constructor method is invoked!" << endl; ...原创 2018-06-12 14:01:21 · 222 阅读 · 0 评论 -
小朋友学C++(15):多继承
单继承:子类(派生类)只能有一个父类(基类)。支持单继承的语言有Java, Objective-C, PHP, C#等。多继承:子类(派生类)可以有多个父类(基类)。支持多继承的语言有C++, Python等。程序1:#include <iostream>using namespace std;class A{public: // 构造函数 ...原创 2018-06-12 14:00:46 · 237 阅读 · 0 评论 -
小朋友学C++(14):两数交换
之前学C语言的时候,咱们直接在main函数中使用“异或”位运算符,很容易实现了两数交换。 本节课将在此基础上,把交换两个数的算法,封装到swap函数中。这样不管是哪个地方想要交换两个数,调用swap函数就可以了。程序1:#include <iostream>using namespace std;void swap(int m, int n){ cout ...原创 2018-06-12 14:00:13 · 416 阅读 · 0 评论 -
小朋友学C++(13):引用
(一)C语言中的“&”在C语言里,我们碰到过“&”这个符号。“&”的使用场景有两种: (1)位运算符int a = 5;int b = 10;int c = a & b;(2)取地址符int a;scanf("%d", &a);(二)C++语言中的“&”在C++里,“&”的使用场景有三种: (1)...原创 2018-06-12 13:59:39 · 1444 阅读 · 0 评论 -
小朋友学C++(12):多态
(一)先编写函数:#include <iostream> using namespace std;class Shape{ protected: int width, height; public: Shape( int a = 0, int b = 0) { width = a; ...原创 2018-06-12 13:59:08 · 369 阅读 · 0 评论 -
小朋友学C++(11):“箭头(->)”和“点号(.)”操作符的区别
先看一个程序:#include <iostream>using namespace std;class A{public: void play() { cout << "playing..." << endl; }};int main(){ A a; a.play(); ...原创 2018-06-12 13:58:25 · 550 阅读 · 0 评论