c++
Coco珂
这个作者很懒,什么都没留下…
展开
-
数据结构——线性表(数组
线性表是n个元素构成的有序序列1.主要的操作://初始化一个空线表Llist MakeEmpty();//根据位序号码K,返回K位置上对应的元素ElementType Findth(int K,List L);//在线性表L中查找X第一次出现的位置int Find(ElementType X,List L);//在位序i前面插入一个新元素Xvoid Insert(ElmentType X,int i,List L);//删除指定位序i上的元素;void Delete(int i, L原创 2020-07-21 18:24:31 · 275 阅读 · 0 评论 -
c++笔记用Arrow来计算偏移量
#include <iostream>#include <string>struct Vector3{ float x, y, z;};int main(){ std::cout << &((Vector3*)0)->y << std::endl; std::cin.get();}解释:假如定义个变量A a; 我们都知道 &a表示变量a的首地址,&(a.i)表示变量i的地址,那么&(a.i)减去&原创 2020-06-15 16:15:40 · 609 阅读 · 0 评论 -
c++拷贝构造函数笔记和总结
以下内容牵扯到了一点点计数器的知识!什么是拷贝构造函数是区别于不同类型的对象来说的一种复制,相同类型的类对象是通过拷贝构造来进行复制的。简单来说,系统会分配另一个内存呢来完成copy!拷贝构造函数的调用1.当调用函数的参数为类的对象#include<iostream>using namespace std;class CExample{private: int a;public: CExample(int b) { a=b;转载 2020-06-15 15:34:09 · 227 阅读 · 0 评论 -
c++Array类的进阶封装
因为*refcnt和T *data都为指针类型,所以在class中进行封装为结构体!template <class T>class Array{ private: struct DataPack//只有在类里面看得见结构体! { T* data; int size; int refcnt; }; DataPack* ptr;//在堆空间上new出一个 public: Array (int原创 2020-06-13 23:49:57 · 202 阅读 · 0 评论 -
c++笔记之智能指针(一)
unique_ptr不可以被复制,如果复制一个unique_ptr,俩个指针指向了同一块内存,如果一个被delete掉,却不能释放内存!unique指针源代码中是有explicit,构造函数实际上是显示的,所以无法用以下的语法:std:: unique_ptr<Entity> entity = new Entity();,也就是说没办法用隐式的转换!. 初始化方法:std::unique_ptr<Entity> entity = std::make_unique<原创 2020-06-13 10:25:01 · 196 阅读 · 0 评论 -
重载==运算符
重载==运算符,用来比较一个复数是否相等,其中Vector2表示的是复数类bool operator==(const Vector2& other)const{ return x==other.x && y == other.y; }同样,重载!=运算符如下:bool operator!=(const Vector2& other)const{ return !(*this == other);//or return !operator==(othe原创 2020-06-10 23:37:00 · 4701 阅读 · 0 评论 -
使用vector时,重载运算符的情况
想要用std::cout输出流来输出一个vector,必须要重载 << 运算符std::ostream& operator << (std::ostream& stream,const Vector2& other)//这里通过引用用来传递vector变量{ stream << other.x <<" ,"<<other.y; //最后要返回一个对流的引用! return stream;}...原创 2020-06-10 23:30:14 · 1190 阅读 · 0 评论 -
Implicit Conversionm in C++ 隐式转换和非法构造
隐式转换是从构造函数形参类型 到 该类类型 的一个编译器的自动转换。先贴代码:#include <iostream>#include <string>class Entity{private: int m_age; std::string name;public: Entity(const std::string& iname) :name(iname),m_age(-1){} Entity(int age) :name("Unknown"),m原创 2020-06-10 18:51:40 · 345 阅读 · 0 评论 -
c++实例化对象
实例化问题就是俩个方面内存在哪储存的问题!stack在stack上创建非常容易,就是平常最常见的方法!class Entity{.......};int main(){ Entity entity; Enitity entity2 = Entity("Coco");}注意这样写的前提是,必须有默认构造函数来初始化变量!但在stack上创建对象时,一旦作用域结束,所有的内存都free堆使用new关键字:int main(){ Entity* e { Entity原创 2020-06-10 16:56:22 · 582 阅读 · 0 评论 -
C++中 生成类的实例初始化
在Java或者C#中,如果像下面一样对创建出的类对象不初始化成一个nullptr 或者空引用得话,会发生错误!class Entity{public: Entity(): A(a){}private: int a; const std::string& getA() const { return a; } };int main(){ Entity e;}但是在c++中,只要我们有默认构造函数Entity(): A(a){},生成得类对象 e 就完全有原创 2020-05-20 21:10:15 · 484 阅读 · 0 评论 -
C++ 派生类的构造函数小结
一:简单派生类的构造函数1.所谓简单派生类:就是指派生类中不包含基类的内嵌对象的派生类简单总结如下:派生类无法总结的基类数据成员,不能出现的初始化列表中,即便是基类中protected类型的数据成员,可以在派生类中的访问,但是还是不能直接出现在初始化列表中这就变得非常清楚了、放在初始化列表中的只能是:** 1. 该派生类新增的数据成员(不包括基类的数据成员)2. 基类的构造函数**而基类中的private和protected成员只能写在派生类构造函数体中且用一般赋值的语法写!二:含有内嵌对象原创 2020-05-18 14:51:29 · 383 阅读 · 0 评论 -
c++实验 继承与派生(停车场程序)
实验七 继承与派生实验目的学习继承与派生的相关理论,熟悉不同继承方式下对基类成员的访问方式,包括以下几个方面:(1)学习声明和使用类的继承关系,声明派生类;(2)熟悉不同继承方式下,对基类成员的访问控制;2 实验内容2.1 停车场程序(1)问题描述请根据题目要求完成简单的停车场管理程序。1.停车场(Park)有 N 个停车位(space),每个停车位可以停放不同类型的汽车(Automobile),包括卡车(Truck)、轿车(Car)、公交车(Bus),但同一时刻一个停车位只能停放原创 2020-05-16 17:03:47 · 1108 阅读 · 3 评论 -
c++中虚函数(virtual function)与 static静态函数
vritual与static函数我们都知道,虚函数和静态是不能一起使用的,原因在下:static成员不属于任何类对象或类实例,所以即使给此函数加上virutal也是没有任何意义的。静态函数是没有this指针的!没有this指针就会影响到虚函数的VTABLE机制:vptr指针是在类的构造函数的创建中产生的,并且只能通过this指针来访问的!通过this指针vptr会指向保存虚函数地址的VTABLE。而static函数它没有this指针,所以virtual也无法工作!同样,this指针的问题还有原创 2020-05-14 14:40:09 · 2319 阅读 · 0 评论 -
虚析构函数与动态绑定的实现
注意不能声明虚构造函数,但是可以声明虚析构函数补充一下:当基类构造函数调用虚函数时,是不会调用派生类的虚函数;同样,基类函数被析构时,调用的也是基类中的虚函数。一般来说,如果一个类的析构函数是个虚函数的话,那么它的派生而来的所有的子类的析构函数也是虚函数,并且在实用引用时可以动态绑定,以此来实现多态如果想通过基类指针删除派生类对象时调用的是基类的析构函数!也就是说,只在派生类写虚析构函数是万万不可得,造成内存泄漏很危险!在基类中写虚构函数,其所有得派生类析构函数都是虚析构函数!...原创 2020-05-14 14:22:03 · 445 阅读 · 0 评论 -
mutable in c++
mutable有俩种不同的用法!NO1.marked a class member is mutable means that constant inside that class can actually modify that memeber!这可能会是我们总能见到的一种写法和用途了!NO2.What is a lambda expression in C++11?lambda就是一种没有名字的函数吧,差不多和inline的功能一样,就是对一些没有必要去重命名的小的片段代码来说很有用![]原创 2020-05-11 22:07:27 · 168 阅读 · 0 评论 -
Const in c++常类型数据成员与函数参数
const基础#include <iostream>#include <string>int main(){ const int MAX = 90; int *a = new int; *a = 2; a = (int*)&MAX;}此时*a的值就是 2;#include <iostream>#include <string>int main(){ const int MAX = 90; const int *a =原创 2020-05-11 20:45:36 · 397 阅读 · 0 评论 -
Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet.For example:1 -> A2 -> B……26 -> Z27 -> AA28 -> ABExample1:input: 1output: “A”E...原创 2020-04-27 21:54:34 · 191 阅读 · 0 评论 -
ERROR:对非静态成员引用必须与特定对象相对
class Entity{public: const int size = 5; int example[size]; //报错:非静态成员必须与特定对象相对! Entity() { for (int i = 0; i < 5; i++) { example[i] = 2; } }};int main(){ Entity e; std::cin.ge...原创 2020-04-19 01:24:46 · 4475 阅读 · 0 评论 -
Arrays in c++
p.s.C++数组的基本和C语言中类似,在此就只补充一些之前不够了解和熟练的方法!new方法:int * another = new int[5];这样创建的数组和普通方法int example[5] 中的生命周期有很大的不同:new方法创建的数组必须就要用到delete才可以删除!int * another = new int[5];delete[] another在内存中却有很...原创 2020-04-19 01:04:15 · 239 阅读 · 0 评论 -
Visibility in c++
p.s.:本人觉得好像找不到Visibility合适的中文翻译,就这样了吧。。。什么是Visiblity(可见性)就是谁可以看到他们,谁可以调用,使用?有关实际运行方式的信息,对程序性能没有影响c++中的三个可见修饰符protectedprivatepublicprivate:意味着只有该Entity内部才能实际访问它(特殊情况:友元)class Entity {p...原创 2020-04-19 00:11:25 · 427 阅读 · 0 评论 -
Pure Virtual Function什么是纯虚函数
纯虚函数纯虚函数:是一个在基类中声明的虚函数,没有定义具体的操作,需要各派生类(子类)根据实际需要给出各自的定义!c++中虚函数和抽象函数在本质上基本相同!注意的是,无法实例化!通常被叫做接口的东西 interfaces,里面仅仅包含未实现的方法,实际上无法实例化纯虚函数与一般虚函数的区别就是,摆脱身体,取而代之!virtual std::string GetName() = 0;对...原创 2020-04-18 20:29:15 · 710 阅读 · 0 评论 -
虚函数 Virtual func
关于多态多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。原创 2020-04-08 23:16:37 · 249 阅读 · 0 评论 -
内置变量类型 c++
内置变量类型1.内置类型:也就是c++ / c本身提供的类型,如int float long 等等,但需要注意的是,有些编译器它有特殊的内置变量类型2.是一个变量,这个变量的类型是内置类型Eg:class Entity{ ''''''''};Entity a;这个a 就不是内置变量类型,我们一般称之为自定义变量类型,或者叫做拓展变量类型!...原创 2020-04-08 21:17:50 · 895 阅读 · 0 评论 -
动态分配一个m*n*k的三维数组
int ***p = new int **[m];for(int i = 0; i < m; i++){ p[i] = new int * [n]; for(int j = 0; j < n; j++) { p[i][j] = new int [k]; } }//delete的时候,从里向外释放!for(int i = 0; i < m; i++...原创 2020-03-31 19:07:40 · 221 阅读 · 0 评论 -
Inheritance in c++
Inheritance差不多就是能够让我们在类的分类支创建子类,最初的父类!避免我们代码重复使用,也就是代码的复用!在类之间放置我们所有的通用功能,进入父类(有点像个模板)class Enitity{public:float x,y;void Move(float xa, float ya){x += xa;y += ya;}class Player{public:...原创 2020-03-24 17:56:19 · 228 阅读 · 3 评论 -
Constructors and Destructors in c++
class Entity{public:float X,Y;void Init(){X = 0.0f;Y = 0.0f;}void Print(){std::cout << X << "," << Y std::endl;}};int main(){Entity e;e.Init();e.Print();std::cin....原创 2020-03-22 17:43:18 · 331 阅读 · 0 评论 -
Local static in c++ ENUMS in c++
static就是将变量的生存周期延长到了真个程序例子int i = 0;void Function(){i++;std::cout << i << std::endl;}int main(){Function();i = 10;Function();Function();Function();Function();std::cin.ge...原创 2020-03-22 15:59:44 · 174 阅读 · 0 评论 -
中的singleleton
c++中的singleleton模式(单例模式)注意的点:采用函数内static变量作为唯一实例变量的存储器。以后慢慢补充!class Singleleton { public: static Singleleton *GetInstance() { ...原创 2020-03-17 23:04:44 · 367 阅读 · 0 评论