C#
我是菜B 记笔记用的 大佬轻喷
qq_40272523
这个作者很懒,什么都没留下…
展开
-
。
“把简单的事情想复杂 会发现新领域”比如很多新学科的出生线性代数 只要往细里想就有很多细节“把复杂的事情想简单,会发现定律”世界不过是微观波的相互作用 衍生出了万物 可以得知...原创 2019-10-17 21:51:19 · 91 阅读 · 0 评论 -
extern 和using
在C#里你在一个名空间里引用别的名空间其实就相当于#include<.h>以及#include<.cpp>因为C#里名空间既代表声明又有实现。#include<iostream>就相当于在C#里添加了 std这个名空间的引用但如果你要用里面的类仍要加上所属国家名尽管你们建立了外交关系std::cout这样但你可以using namespace...原创 2019-10-04 13:42:06 · 222 阅读 · 0 评论 -
stdafx.h和stdafx.cpp
standard pplication frameworkExtensions:标准应用程序框架扩展其实stdafx.h就是一个头文件集合 也就是一个声明集合我们把一般用到的比如自己定义的或者是接口头文件在stdafx.h里#include了然后在stdafx.cpp里只做一件事:包含stdafx.h那么就会起到预编译所有头文件的效果就不用再每个包含包含stdafx.h的.cpp...原创 2019-10-04 19:08:11 · 266 阅读 · 0 评论 -
为什么.lib可以用声明存在而dll只能用函数指针啊
有同学会问了 为什么lib可以只有函数声明 啊 他不也是实现和声明分开了为什么dll必须要用函数指针啊因为确实是都是实现和声明分开 但是lib你最后合成为一个.exe时 声明和实现都在的都在一个.exe里但dll不是 你自己的.exe可以只有一份函数声明吗 不可以 所以只能是函数指针//还有一件事 一般用抽象类和dll实现接口 一般的话是接口类指针在本程序中...原创 2019-10-04 19:13:14 · 98 阅读 · 0 评论 -
C#为什么如此规范
其实想想为什么现在C# Java 包括各种,MFC能那么便利 那么规范 那么规整 那么安全 本质还是因为机器性能提高和内存的扩大。C#只要是对象都是引用类型,这其实是会增加内存消耗的 不过好处是安全,还有你不赋值 默认会给你0啊false null啊 这都是后面有一套系统支撑的 还有内存回收机制 我们不需要去管堆区内存的回收。这都是因为内存足够大了 才可以这么安然 这么淡定但负重不...原创 2019-10-05 10:53:29 · 96 阅读 · 0 评论 -
虚指针和虚函数表
C++中就是如果一个类里有虚函数,那么在每一格类的实例中它的数据区都有一个虚函数表指针 指向 本类对应的虚函数表这个表既然所有实例都能访问,不难想象在程序运行时 就存在 结束时才释放。比如Student类有两个虚函数 那么它的虚函数表就有两项Gradutade如果继承了它 并且也有两个同名同类型的虚函数那么Student*p=gradutade时...原创 2019-10-05 20:27:24 · 158 阅读 · 0 评论 -
Event和Message的关系
也就是实际上调用WndProc()都是由OS完成的 窗口程序的大部分都是OS完成的因为我们毕竟在它基础上就是OS有自己的消息队列 和消息循环的但是当我们 用户(事件发起者)做出了某事件后,比如按下鼠标这一Event,OS会将事件用消息去标识是什么事件然后作为参数 调用 On消息()。我的理解是这样的 事件是一个客观的源头,消息是事件的一种人为标识,是一个数据结构作为参数供W...原创 2019-10-05 20:43:00 · 1015 阅读 · 0 评论 -
readonly和只读属性的区别
readonly a是 对象一旦定义那么它的字段a除了第一次在构造函数里赋值之外就不能再赋值了 哪怕 哪怕是在自己的方法中也不行但只读属性 是相对于类外来说的 在类内还是可以随意改变的...原创 2019-10-05 21:06:57 · 411 阅读 · 0 评论 -
OS消息处理程序详细过程
OS有自己的消息队列和消息循环,至于消息处理工作OS自己可以完成; 同时OS为当前运行的每个Windows应用程序也建立了各自的消息队列,该应用程序的消息循环和消息处理函数(窗口过程函数)需要由应用程序的代码来编写,但是这些应用程序的消息循环和窗口过程函数中的实现操作,还必须依靠OS来完成。(如消息循环中的GetMessage, TranslateMessage, DispathMessage; ...原创 2019-10-05 21:07:42 · 284 阅读 · 0 评论 -
初始映射
映射有很多 最基本的能用到的是MFC的消息映射机制 就是在消息处理函数里面把根据不同的消息ID 和 处理函数地址相关联起来 的就是这个。映射的概念是:设有一个集合D,若存在一个规则f:使得对任意x属于D根据规则f在Y集合中都有一个唯一确定的元素与之对应那么称 f:由D到Y为映射,那么MFC中的映射,中集合D就是消息集合,而Y集合就是消息处理程序比如WM_PAINT,对应 OnPai...原创 2019-10-06 10:49:23 · 186 阅读 · 0 评论 -
dll与lib的导入
OK组件和组件接口可以说是dll的一种高级应用了接下来我们试着实现以下最简单的从dll和lib的调用lib这次不用再编译环境设置路径的方式而是利用#pragmacomment(lib,"..//Debug//FuncDll.lib")这种方式相当于直接指定lib路径 我们只需要一个头文件就可以了我记得在windowsAPI中包含声音实现的部分也是这样弄得结果...原创 2019-10-04 12:07:43 · 210 阅读 · 0 评论 -
C#.5如何实现堆区资源回收
C#堆区的空间释放 即那些引用类型的释放都有.NET自动完成 反正挺复杂的不想了解。。接口在面向对象里 是对组件服务的抽象描述 就是抽象成一个类 和它的利用类成员函数取得组件服务...原创 2019-10-03 23:08:36 · 106 阅读 · 0 评论 -
C#.1
就我们上一篇文章不是说了 C++是按文件编译的 那为什么C#就没有文件的概念了也没有头文件和源文件的概念只有.cs呢?可以理解为头文件 源文件都在.cs中需要引用的类和函数一定要放在自己的前面的这种设定本来就是低内存时代的产物,在现在牛逼的机器上面只有坏处没有好处。“和分配内存无关。这么设计只是为了防呆。和C/C++不同,C#在语法上有很多防呆的设计。这就好比USB反过来...原创 2019-10-02 17:22:34 · 300 阅读 · 0 评论 -
为什么类的成员函数在头文件中定义被多次包含没问题呢
先看一段话“inline和实际内联是两回事但是inline写出了或者直接定义在类内部的被当成inline函数的成员函数它不论有几处定义------不论头文件包含几次,或者类被复制在不同实现文件中几次-------都和被内联成功一样如果内联成功,那么就不会有函数定义的代码生成,只会用代码块取代函数调用。如果内联失败,那么编译器暗中生成非内联代码,共调用者使用,生成对...原创 2019-10-02 17:29:18 · 399 阅读 · 0 评论 -
C#.2
一.在C#中一般是不会将成员函数放在类外实现的 而是在类内实现,存在内联函数,但要注意,在何处内联代码的决定完全由CLR做出,我们无法使用像C++中inline这样的关键字来控制那些方法是内联的.-----------引自<<C#高级编程>>-P81二.C#编译方式和C不同,对文件的读取顺序,和成员以及类型的定义顺序没有要求,所以不需要头文件。。C++和C有明确...原创 2019-10-02 21:48:31 · 179 阅读 · 0 评论 -
纪念第一个lib创建并调用成功
NICE !NICE !NICE!然后我看了一下lib除非反汇编 否则是无法查看其中源代码的 也就是别人无法得治如何实现的所谓的DX不开源 也是因为这我想 所有组件接口实现都是lib而OpenGL开源可能是直接的.cpp文件?反正可以看到实现的还有就是lib里其实类似一个工程一个project也有头文件来声明在源文件实现 只不过是格式为lib。...原创 2019-10-02 21:53:03 · 99 阅读 · 0 评论 -
.dll相比.lib的好处
1.首先.lib还要包含头文件路径 然后还要#include<head.h>因为C跟C++都是先看到声明才能用的那种.dll就不用包含头文件了 或者说本身就包含了函数的声明部分2.我们刚才也做了一个.lib并调用它是在连接时随着应用程序一起装入到内存 和应用程序合体了。因此当我们想跟新lib时应用程序也必须要重新编译重新合体一样。就像电脑里的体系结构变了一样 你...原创 2019-10-02 22:25:38 · 283 阅读 · 0 评论 -
C#.3
.dll可移植.dll不可移植 是在统一解决方案 但是不同的名空间中一个名空间相当于一个文件一个名空间里可以有多个类如果一个名空间(文件)想用另一个名空间(文件)也需要“#include” 不过是在引用里 包含就可以了 相当于一次性将头文件(声明)和源文件(实现)都包括了妈 我有点晕 主要是如果太考虑面向对象的观念 就会容易陷入到层次里 而不知道在memory中...原创 2019-10-02 22:46:36 · 78 阅读 · 0 评论 -
C#.4(关于引用)
1.名空间的话只要你在引用里加他了 必定可以显示访问该名空间不引用它 必定会不知道你说的是哪个但名空间中的类默认是私有的 如果想访问类 要把类变成public 值得一提的是一个解决方案的.dll 里的类默认由public修饰一个一个名空间就像一个一个国家 你不引用它 就像没有建立外交关系一样不行的。然后国家将里面的类有些是机密的 那就private 有些是用来与外部分享的...原创 2019-10-03 11:45:10 · 411 阅读 · 0 评论 -
C++静态成员函数和非静态成员函数
C++非静态数据成员“偷偷”传递本对象的this指针 即 对象的首地址,而非静态成员因为并不属于哪一个对象 所以不传递this指针所以实际上 不管是静态成员函数 还是非静态成员函数 本质上都是属于类 的都是在全局区呆着 不因对象的出生而诞生不因对象的销毁而销毁,出生的只是成员变量部分。...原创 2019-10-03 11:56:26 · 205 阅读 · 0 评论 -
COM组件详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/rankun1/article/details/50850432 ...转载 2019-10-03 13:03:29 · 6954 阅读 · 0 评论 -
自己实现组件时的一些笔记
一.软件开发的阶段(1)结构化编程:采用自顶向下的设计方式 先划分大的模块 在一步一步完善细节。OS中一开始也是模块化编程。但这样有一个问题,就是每新增一个模块,都要考虑自身模块与外界交流的接口 以及别的模块也要相应的增加东西考虑这一个新增的模块。优点是,速度快 可以直接一层调用到所需模块。(2)面向对象编程:采用面向对象的方法,将程序抽象成类 模拟现实世界的一个个实体,利用继承和多态...原创 2019-10-03 23:07:40 · 102 阅读 · 0 评论 -
extern的作用
我们知道C和C++是用的按文件编译的方式 也就是一个cpp是一个整体那么他们互相之间 对彼此文件之间的状况是完全透明的 因此你即便在两个.cpp文件里 定义一个名字的全局变量各自编译各自的文件都是没问题的,但是我们知道全局变量本意是作用于整个程序的 即作用于程序中所有文件的所以它不应该重名 因此在编译后链接成一个.exe文件 时 就会发现一个程序有两个同名的全局变量 这样就会出问题...原创 2019-10-02 16:16:21 · 113 阅读 · 0 评论