
C++
语言学习
迪崽~
I do what I love.
展开
-
c++基础必备
编译语言和解释语言的区别?编译型语言:优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。解释型语言优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速..原创 2020-08-13 22:21:33 · 454 阅读 · 0 评论 -
C++ STL迭代器相关
map以下代码在编译时出错,提示c++map报错 map/set iterators incompatiblemap<string, int>::iterator it = GetFuncMap().begin();while (it != GetFuncMap().end()){ //.......处理一些事情 ite++;}原因:直接调用两次Get...原创 2020-02-03 16:51:33 · 284 阅读 · 0 评论 -
C++ 基类与派生类
基类的私有成员在派生类中可以被继承(用sizeof也可以证明),但是不能直接访问。可以通过间接方式访问到,不能在派生类中用派生类函数调用访问,必须借助于继承的基类的公有成员函数访问基类的私有成员。C++ 为了确保程序员不会把系统内置类型的运算符进行修改,比如int+int。使重载运算符只是和自定义类型相关,要求运算符函数是类成员或者至少含一个类类型形参。...原创 2019-12-15 21:43:49 · 184 阅读 · 0 评论 -
C++ 虚函数
如何在派生类中回避虚函数?借助于作用域运算符实现int p=derived->base:func();强行调用基类中定义的函数版本,而不管derived的动态类型到底是什么。通常当一个派生类的虚函数调用它覆盖的基类的虚函数版本时。基类版本完成继承体系中都要做的共同任务,派生类定义与本身相关的操作。...原创 2019-12-15 21:43:29 · 157 阅读 · 0 评论 -
C++ new与new()的区别
类中有公共的默认构造函数,new class与new class()都会调用默认构造函数。声明一个类对象时,不一定是调用了默认的构造函数;只有在没有任何构造函数且类 变量{}声明的时候,编译器才会对内置类型进行“零值化”;类中无显示定义的默认构造函数,但编译器会自动合成默认的构造函数的四种情况:1). 包含了一个类的对象,类对象类型有一个默认构造函数(包括编译器合成的默认构造函数)2). ...原创 2019-12-15 21:07:11 · 984 阅读 · 0 评论 -
C++ 右值
左值和右值: (i) 是一个表达式, 对于只有单个变量的表达式,c++编译器的处理是返回一个绑定到该变量的左值引用,所以decltype((i)) 返回 int&。右值绑定时会把所有的 单个变量 都看成变量表达式, 然而单个变量的表达式返回的是一个左值引用。而右值引用无法绑定到左值引用。局部变量i不可作为非类型模板参数, 非类型模板参数必须在编译时即为常量表达式。模板实参推断中才会出现引...原创 2019-12-14 15:53:19 · 289 阅读 · 0 评论 -
关键字解释
条件变量: 线程中的条件变量是等待共享数据内的某个条件出现,不是等待的互斥锁!条件变量特别适用于多个线程等待某个条件的发生。auto与std::function: 在实际使用中都用 auto 关键字来代替std::function… 这一长串了std::function<void(const Foo&, int)> f_add_display = &Foo::pr...原创 2019-12-14 10:36:20 · 253 阅读 · 0 评论 -
C++ 字符的特殊处理
字符NULL、 {}、 \0 // char*数组中 char p0[2] = { NULL }; char p1[2] = {}; char p2[2] = {0};//把ascall码0对应的字符赋值给数组,不加 " " 引号赋值都是以ascll码赋值。 char p3[2] = {'\0'}; char p4[2] = ""; 这5个都是一...原创 2019-12-13 22:53:02 · 2716 阅读 · 1 评论 -
C++ enum与switch
enum与switch 搭配使用:enum enumType{S0, S1, S2}S=S0; 注意这里在声明枚举的时候直接定义了枚举变量 S,并初始化为 S0switch (S){ case S0:{...;break;} case S1:{...;break;} case S2:{...;break;} default:break;}枚举值变为静态常量。如 e...原创 2019-12-13 21:15:30 · 1204 阅读 · 0 评论 -
C++ static数据成员和函数
static: 在类的构造函数里初始化static变量显然是不合理的。其实我们可以在类中对static成员变量初始化的,就是使用关键字const进行修饰:只有静态整型常量才能在类中初始化。static const 与const static是一样的,没有区别 char也是整型变量! 类内定义的成员函数具有内联函数的特性。一般是较小处理过程的函数在类内声明为内联。模板: 模板编译时就要实例化,声...原创 2019-12-13 21:08:54 · 119 阅读 · 0 评论 -
c++ 模板
模板: 模板编译时就要实例化,声明和定义都要写在一起放头文件中。这样才能被CPP引用文件中在编译时具现。定义和程序员在使用模板类时最常犯的错误是将模板类视为某种数据类型。所谓类型参量化(parameterized types)这样的术语导致了这种误解。模板当然不是数据类型,模板就是模板,恰如其名:编译器使用模板,通过更换模板参数来创建数据类型。这个过程就是模板实例化(Instantiation)...原创 2019-12-13 21:00:46 · 106 阅读 · 0 评论 -
c++ 类对象的初始化
基类对象的初始化: 派生类对象中包含基类对象,因此派生类对象在创建时,除了要调用自身的构造函数进行初始化外,还要调用基类的构造函数初始化其包含的基类对象。因此,程序中任何能够生成派生类对象的语句,都要说明其包含的基类对象是如何初始化的。 如果对此不做说明,则编译器认为基类对象要用无参构造函数初始化——如果基类没有无参构造函数,则会导致编译错误。 在执行一个派生类的构造函数之前,总是先执行基类的构...原创 2019-12-13 20:40:16 · 899 阅读 · 0 评论 -
C++ 编译时断言分析
概念:编译时断言指的是在编译时刻就能够判断某些条件是否成立,而不是等到运行时刻报错。示例:C++ Metaprogramming(元编程)概念的出现,编译时断言技术也已经和runtime assertion一样的普遍。更好的解决方案是依赖一个模板提供一个具有说明性的名字,这样,编译器就会在错误信息中包含这个名字了。template <bool> struct CompileTi...原创 2019-11-25 17:24:19 · 331 阅读 · 0 评论 -
C++ UML类图梳理
组合关系 (组合关系)是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。聚合关系(聚合关系) 是关联关系的一种,是强的关联关系。聚合关...原创 2019-11-24 13:57:42 · 698 阅读 · 0 评论 -
C++不完整类型incomplete type 浅析
C++不完整类型incomplete type 浅析类型定义:The following are incomplete types:• Type void• Array of unknown size• Arrays of elements that are of incomplete type• Structure, union, or enumerations that have ...原创 2019-11-24 10:54:51 · 9117 阅读 · 0 评论