
C++
Half-up
【Keep Reading , Keep Writing , Keep Coding.】
展开
-
C++学习笔记——this指针
思考?类中每个对象的数据成员都占用独立空间,但成员函数是共享的,可是各个对象调用相同的函数时,显示的是对象各自的信息,这是怎么做到的?成员函数是如何区分不同对象的?成员函数中会包含this指针,如编译后成员函数setlunzi()的形式如下所示:void Car::setlunzi(int n,Car *this){this->setlunzi=n;}this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,使得从外部看来,每个对象都拥有自己的成员函数,因原创 2020-12-17 18:11:13 · 275 阅读 · 0 评论 -
C++学习笔记——类与对象
类的定义类是对象的抽象,是一种自定义数据类型。类包含——数据成员和成员函数数据成员相当于属性,成员函数相当于方法;类的定义形式如下class 类名{成员访问限定符(public, private,protect)数据成员成员访问限定符(public, private,protect)成员函数};注意最后的;代表类的结束,不能去掉;class Car{ public: void diver(); void stop(); private:原创 2020-12-17 17:10:05 · 187 阅读 · 0 评论 -
C++应用案例——第1 章初识C++
知识点:string 类型1、知识点描述string 是C++标准模板库提供的一个类,但我们完全可以把它当作一个基本数据类型来使用。接下来将编写一个简单的程序:完成对人名的排序;例如:zhangsan、lisi 按字母先后顺序排列,来加强学生对字符串的操作。代码:#include <iostream>#include<string>using namespace std;//先定义一个人名字符串string str[50];void paixu(string原创 2020-12-17 11:37:25 · 283 阅读 · 0 评论 -
C++思考——1、请简述new/delete 与malloc()/free()的区别。 2、请思考一下引用与指针有什么区别?
------第1 题答案malloc()/free()是C 语言的标准库函数,new/delete 是C++的运算符,它们都可用于申请动态内存和释放内存,new/delete 在实现上其实调用了malloc()/free()函数,然后又做了一些其他封装,所以两者虽有相似却又有不同。(1) new 创建对象时返回的是直接带类型信息的指针,而malloc()返回的都是void*类型的指针。(2)两者在创建对象时都可能造成内存泄露,但new 可以定位到哪个文件的哪一行,而malloc()没有这原创 2020-12-17 10:31:18 · 163 阅读 · 0 评论 -
C++中不允许定义引用数组
首先,什么叫引用数组?顾名思义,就是一个数组,这个数组的每一个元素是一个引用。如果引用数组,那就是int & b[3];int *p=&b[3];int &b[3]=p;这种不行,因为引用数组的话,就相当于给数组中每个元素引用,没有分配空间C++中引用没有引用数组可以改成这样int (&b)[3] = p; //b本身是一个引用,b不是数组。这样就可以使用int (&b)[3]=p;int (&b)[3];int *p=(&b原创 2020-12-17 09:06:10 · 5639 阅读 · 0 评论 -
C++学习笔记——C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中的函数重载在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须转载 2020-12-17 08:45:57 · 199 阅读 · 0 评论 -
C++学习笔记——动态分配内存
在C语言中,动态分配内存时一般使用malloc()函数,但是对于非内置数据类型(如struct,enum,class等),malloc()与free()无法满足动态对象的需求,因此C++引入new与delete关键字,用来进行内存申请与释放空间。new运算符下面是使用 new 运算符来为任意的数据类型动态分配内存的通用语法:new data-type;(new数据类型(初始化列表));我们知道,malloc()函数申请内存时返回的是一个void*类型的指针,而new直接分配一个储存空间,并且指定原创 2020-12-16 16:26:02 · 328 阅读 · 0 评论 -
C++学习笔记——文件和流
到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型:link要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件iostream 和 fstream打开文件在从文件读取信息或者向文件写入信息之前,必须先打开文件。ofstream 和 fstream 对象都可以用来打开文件进行写转载 2020-12-14 23:06:04 · 175 阅读 · 0 评论 -
C++学习笔记——C++ 异常处理
异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。try: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。如果有一转载 2020-12-10 08:27:33 · 426 阅读 · 0 评论 -
C++学习笔记——C++ 继承
继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。基类 & 派生类一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生转载 2020-11-19 08:32:12 · 312 阅读 · 0 评论 -
C++学习笔记——类的静态成员(9)
-----------我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。====静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化,如下面的实例所示。#include <iostream> using nam转载 2020-11-18 19:39:04 · 144 阅读 · 1 评论 -
C++学习笔记——this指针(8)
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。下面的实例有助于更好地理解 this 指针的概念:#include <iostream> using namespace std; class Box{ public: // 构造函数定义 Box(double l转载 2020-11-18 19:24:48 · 170 阅读 · 0 评论 -
C++学习笔记——友元函数(6)
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。==友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所示:class Box{double width;public:double length;friend转载 2020-11-18 19:06:37 · 210 阅读 · 0 评论 -
C++学习笔记——C++ 拷贝构造函数(5)
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:~通过使用另一个同类型的对象来初始化新创建的对象。~复制对象把它作为参数传递给函数。~复制对象,并从函数返回这个对象。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:classname (const classname &obj){// 构造函数的主体}在这里,obj 是一个对象引用,该对象是用于初转载 2020-11-18 18:56:45 · 204 阅读 · 0 评论 -
C++学习笔记——C++ 类构造函数 & 析构函数(4)
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。例如class Line ,构造函数为Line();构造函数可用于为某些成员变量设置初始值。下面的实例有助于更好地理解构造函数的概念#include <iostream> using namespace std; class Line{ public: void setLength( double len )转载 2020-11-18 18:31:01 · 218 阅读 · 0 评论 -
C++学习笔记——C++ 类访问修饰符(3)
关键字 public、private、protected 称为访问修饰符。class Base { public: // 公有成员 protected: // 受保护成员 private: // 私有成员 };公有(public)成员公有成员在程序中类的外部是可访问的。您可以不使用任何成员函数来设置和获取公有变量的值,如下所示:#include <iostream> using namespace std; class转载 2020-11-18 18:08:26 · 129 阅读 · 0 评论 -
C++学习笔记——C++ 类成员函数(2)
上文链接:link.类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。就相当于定义函数让我们看看之前定义的类 Box,现在我们要使用成员函数来访问类的成员,而不是直接访问这些类的成员:class Box {public:double length; // 长度double breadth; // 宽度double height; // 高转载 2020-11-18 17:52:43 · 232 阅读 · 0 评论