10 2018 档案
摘要:1、基本概念 纯虚函数是一个在基类中说明的纯虚函数,在基类中没有定义,要求任何派生类都定义自己的版本。 纯虚函数为各派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)。 纯虚函数的语法: 一个具有纯虚函数的基类称为抽象类。 2、抽象类小案例 3、抽象类在多继承中的应用 绝大多数面向对象语
阅读全文
摘要:1、虚函数表和vptr指针 当类中声明虚函数时,编译器会在类中生成一个虚函数表; 虚函数表是一个存储类成员函数指针的数据结构; 虚函数表是由编译器自动生成与维护的; virtual成员函数会被编译器放入虚函数表中; 存在虚函数时,每个对象中都有一个指向虚函数表的指针(vptr指针)。 说明: (1)
阅读全文
摘要:1、多态的意义 如果有几个上似而不完全相同的对象,有时人们要求在向它们发出同一个消息时, 它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。 C++中所谓的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。 2、多态的三个必要条件 要有
阅读全文
摘要:1、类与类之间的关系 has-A,uses-A 和 is-A has-A 包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。 uses-A 一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。 is
阅读全文
摘要:1、操作符重载的基本语法 所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。 运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大家都已习惯于用加法运算符”+”对整数、单精
阅读全文
摘要:1、友元 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函 数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称
阅读全文
摘要://MyArray.h #pragma once #include using namespace std; class MyArray { public: MyArray(); MyArray(int len); MyArray(const MyArray &another); ~MyArray(); void setData(int index...
阅读全文
摘要:1、把全局函数转化成成员函数,通过this指针隐藏左操作数 2、把成员函数转换成全局函数,多了一个参数 3、函数返回元素和返回引用 案例一:实现两个test相加 利用全局函数实现两个test相加 利用成员函数实现两个test相加: 案例二:实现test的+=操作 案例三:连加等
阅读全文
摘要:首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。注:this指针并不是对象的一部分,this指针所占
阅读全文
摘要:1、静态成员占多大? 一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分? 一个Class对象需要占用多大的内存空间。最权威的结论是: 非静态成员变量总合。 加上编译器为了CPU计算,作出的数据对齐处理。 加上为了支持虚函数,产生的额外负担。 (1)空
阅读全文
摘要:静态成员变量 在c++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用,所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的规则,保证了安全性还可以节省内存。 类的静态成员,属于类,也属于对象,但终归属于类。 静态成员函数 案例一:生成
阅读全文
摘要:对象动态建立和释放 new 和delete 在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。 new和d
阅读全文
摘要:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。 构造函数中调用构造函数很危险。 当类成员中含有一个const对象
阅读全文
摘要:系统提供默认的拷贝构造器,一经定义不再提供。但系统提供的默认拷贝构造器是 等位拷贝,也就是通常意义上的浅拷贝。如果类中包含的数据元素全部在栈上,浅拷贝 也可以满足需求的。但如果堆上的数据,则会发生多次析构行为。 示例代码: 浅拷贝: 以上代码的图示如下: 调用test()时,首先调用(t1)构造函数
阅读全文
摘要:1.我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过。 2.此时我们有两种解决方案: a.在指定的源文件的开头定义:#define _CRT_SECURE_NO_WARNINGS (只会在该文
阅读全文
摘要:屏幕输出: 结论: 结论一:func2()函数 返回一个元素。 函数的返回值是一个元素(复杂类型的),返回的是一个新的匿名对象(所以会调用匿名对象类的拷贝构造函数); 结论二:有关 匿名函对象的去和留 如果用匿名对象 初始化 另外一个同类型的对象,匿名对象转成有名对象; 如果用匿名对象 赋值给 另一
阅读全文
摘要:默认构造函数 二个特殊的构造函数(1)默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空;(2)默认拷贝构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制。 总结: 类中 会有个默认的无参构造函数: >当没
阅读全文
摘要:无参数构造函数、有参数构造函数、赋值构造函数 (3)拷贝构造函数 由已存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成。拷贝构造器的格式是固定的。 拷贝构造函数的作用:用一个对象初始化另外一个对象
阅读全文
摘要:如果我们没有定义构造函数,系统会为我们自动定义一个无参的默认构造函数的,它不对成员属性做任何操作,如果我们自己定义了构造函数,系统就不会为我们创建默认构造函数了。析构函数也是如此,只不过析构函数无参数,无函数重载。
阅读全文
摘要:1、如果没有析构? 如果不用构造函数初始化,该怎么办: 为每个类都提供一个public的initialize函数; 对象创建后立即调用initialize函数进行初始化。 缺点1)initialize只是一个普通的函数,必须显示的调用2)一旦由于失误的原因,对象没有初始化,那么结果将是不确定的没有初
阅读全文
摘要:在一个文件里进行实现: 在多个文件里进行实现:
阅读全文
摘要:利用全局函数实现 利用成员函数实现:
阅读全文
摘要:求圆的周长和面积的多文件实现 一个类对应一个头文件和一个.cpp文件,在头文件写类的声明,在.cpp文件中写类的实现。
阅读全文
摘要:面向对象与面向过程: 方法一:面向过程 方法二:面向对象
阅读全文
摘要:1、从struct说起 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。这是 c 语言中封装的概念。 对C语言中结构体的操作,都是通过外部函数来实现的。比如 2、封装的访问属性 struct 中所有行为和属性都是 public 的(默认)。C++中
阅读全文
摘要:1、类与对象 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。 类定义 定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个
阅读全文
摘要:1、函数指针的介绍 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: 该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可: 则pf可指向int(int,int)类型的函数。pf前面有*,说明pf是指针,右侧是形参列表
阅读全文
摘要:函数重载(Function Overload):用同一个函数名定义不同的函数,当函数名和不同的参数搭配时函数的含义不同。 1、重载规则 (1)函数名相同; (2)参数个数不同,参数的类型不同,参数顺序不同,均可构成重载; (3)返回值类型不同则不可以构成重载。 2、调用规则 (1)严格匹配,找到则调
阅读全文
摘要:通常情况下,函数在调用时,形参从实参那里取得值。对于多次调用同一函数同一 实参时,C++给出了更简单的处理办法。给形参以默认值,这样就不用从实参那里取值了。 1、单个默认参数 若填写参数,使用你填写的,不填写,使用默认的。 2、多个默认参数 在默认参数规则中,如果默认参数出现,那么右边的都必须有默认
阅读全文
摘要:C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用 的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差错。 1、内联函数基本概念 C++提供了 inline 关键字,实现了真正的内嵌。 特点: (1)内联函数声明时inline关键字必须和函数定义结
阅读全文
摘要:1、变量名 变量名实质上是一段连续存储空间的别名,是一个标号(门牌号); 通过变量来申请并命名内存空间; 通过变量的名字可以使用内存空间。 2、引用的概念 变量名,本身是一段内存的引用,即别名(alias)。引用可以看作一个已定义变量的别名。 引用的语法:Type & name = var; 用法如
阅读全文
摘要:1、const基础知识 红色代表可修改,蓝色代表不可修改 合理的利用const的好处:(1)指针做函数参数,可以有效的提高代码可读性,减少bug;(2)清楚的分清参数的输入和输出特性。 如: int setTeacher_err( const Teacher *p)const修改形参的时候,在利用形
阅读全文
摘要:1、“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。 2、变量检测加强 在C语言中,重复定义多个同名的全局变量是合法的;在C++语言中,不允许定义多个同名的全局变量。C语言中多个同名的全局变量最终会被链接到全局数据区的同
阅读全文
摘要:一、C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 1.<iostream>和<iostream.h>格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文
阅读全文
摘要:1.背景 C语言作为结构化和模块化的语言,在处理较小规模的程序时,比较得心应手。但是当问题比较复杂,程序的规模较大时,需要高度的抽象和建模时,C语言显得力不从心。 2.应用领域 如果项目中,既要求效率又要建模和高度抽象,就选择C++。 (1)系统层软件开发:C++语言本身的高效; (2)服务器程序开
阅读全文
摘要:一:如何判断调参范围是否合理
二:如何确定参数的调节方向
三:设置合理的调参起始点
阅读全文
摘要:零、Inception-Resnet-V2的网络模型
一、Inception
二、Resnet
三、1*1卷积的主要作用
阅读全文

浙公网安备 33010602011771号