1、struct和class区别
struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的
class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数
2、new和malloc区别
3、虚函数的定义
virtual 函数返回值类型 虚函数名(形参表)
{ 函数体 }
虚函数必须是类的非静态成员函数(且非构造函数),虚函数诞生的目的就是为了实现多态,虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义(形式也是:virtual 函数返回值类型 虚函数名(形参表){ 函数体 }),在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型。以实现统一的接口,不同定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态地选择合适的成员函数。
定义虚函数的限制:
(1)非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。
(2)只需要在声明函数的类体中使用关键字“virtual”将函数声明为虚函数,而定义函数时不需要使用关键字“virtual”。
(3)如果声明了某个成员函数为虚函数,则在该类中不能出现和这个成员函数同名并且返回值、参数个数、参数类型都相同的非虚函数。在以该类为基类的派生类中,也不能出现这种非虚的同名同返回值同参数个数同参数类型函数。
关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码(Or 不变的 接口)来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。
decimal 类型可以精确地表示非常大或非常精确的小数。decimal数据类型最多可存储 38 个数字,它存储了一个准确(精确)的数字表达法,不存储值的近似值。该类型对于必须避免舍入错误的应用程序(如记账)很有用。例如:decimal(28,2)
float是浮点数,不能指定小数位。 float和real数据类型被称为近似的数据类型。
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
2、互斥量:为协调一起对一个共享资源的单独访问而设计的。
3、信号量:为控制一个具备有限数量用户资源而设计。
4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
全局变量 g_
常量 c_
成员变量 m_
静态变量 s_
7、static关键字在c++的作用
static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0.
https://www.cnblogs.com/songdanzju/p/7422380.html
1. SendMessage函数要等到消息被处理后才返回;PostMessage 消息发出后马上返回
2. PostMessage发向目标窗口的消息一定会进入消息队列;
SendMessage向同一线程的窗口发消息,不会进入消息队列;SendMessage向其他线程的窗口发消息,则会进入消息队列;
3. PostMessage的返回值表示PostMessage函数执行是否正确;SendMessage的返回值表示其他程序处理消息后的返回值
9、dll
10、c++设计模式
11、C++开发桌面应用程序
12、C++防止绘图闪烁
13、C++快速设计漂亮界面
uwp ; qt ;最烂的编程体验就是c++配合mfc或者win32 api编程windows桌面程序
对比之下用mac你就能用oc配合cocoa框架写出漂亮美观的gui程序