![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
丨Q ,Q丨
这个作者很懒,什么都没留下…
展开
-
C++左值引用
c++左值引用1.左值引用是什么左值引用是一个变量的别名2.左值引用声明<类型名> &引用名= 被引用对象;必须在声明的时候初始化,一旦初始化,就不可以引用其他变量原因:int a = 3;int b = 5;int &c = a;//引用c指向a,或者说c引用了a注意下面的语句:c = b;将b的值赋给c引用的...原创 2019-03-30 10:40:42 · 616 阅读 · 0 评论 -
C++new与定位new
C++new运算符与定位new运算符1.new运算符和new[]运算符new运算符会根据所给类型动态分配内存(在堆中),然后返回首地址A.动态分配基本类型和基本类型的数组//基本类型 //仅分配空间,不初始化 typeName * pointer = new typeName; //例: int * pint = new int; ...原创 2019-04-13 19:25:25 · 3027 阅读 · 0 评论 -
C++成员初始化列表
C++成员初始化列表首先明确,成员初始化列表只能用于构造函数1.使用成员初始化列表的情况I>初始化非静态const成员变量class A{private: const int a;public: A(); };怎么编写构造函数来初始化成员变量a呢?可能会想到这样A::A(){ a = value;}其实这是一个赋值过程,在...原创 2019-04-14 16:47:41 · 719 阅读 · 0 评论 -
C++含有子对象的类 —— has-a关系
C++含有子对象的类 —— has-a关系1.子对象初始化I>子对象调用构造函数可能会想到这样的初始化方式class A { int a;public: A(int a = 0) : a(a) { cout << "A::A()" << endl; }};class B {private: A obj1; A...原创 2019-04-17 14:02:01 · 1125 阅读 · 0 评论 -
C++多重继承与虚基类
C++多重继承与虚基类1.多重继承多重继承就是一个派生类继承了多个基类。I>初始化i>通过成员初始化列表指定构造函数class D : public B, public C {private: int a;public: D(int a1, int a2, int a3) : B(a1),C(a2),a(a3) { cout &...原创 2019-04-17 16:56:41 · 333 阅读 · 0 评论 -
C++联编与虚函数表
C++联编与虚函数表1.联编联编:将源代码中的函数调用解释为执行特定的函数代码块叫函数名联编也就是说:确定执行函数调用会执行哪一个函数I>静态联编(早期联编)编译期间,决定调用哪个函数,普通的非虚函数采用静态联编II>动态联编(晚期联编)程序运行期间,决定调用哪个函数,虚函数采用动态联编2.虚函数机制实现——虚函数表I>虚函数表的内容虚函数表...原创 2019-04-15 00:20:58 · 140 阅读 · 0 评论 -
C++公有继承
C++公有继承 —— is-a关系1.怎样继承class Base{private: ...public: ...};class Derived : public Base{private: ...public: ...}派生类声明时,加上“ : public 基类名”2.继承了什么公有继承,派生类继承了成员和接口。也就是说...原创 2019-04-15 14:12:50 · 583 阅读 · 0 评论 -
对比C++和java在继承方面对方法的不同处理
对比C++和java在继承方面对方法的不同处理1.C++方法隐藏,java方法重载javaclass A{ public void f() { System.out.println("A::f()"); }}class B extends A{ public void f(int a) { System.out.prin...原创 2019-04-15 14:43:22 · 216 阅读 · 0 评论 -
C++RTTI
C++RTTI(运行阶段类型识别)RTTI适用于包含虚函数的类1.3个元素dynamic_cast运算符typeid运算符type_info类dynamic_cast有什么用?可以用来判断指针的类型转换是否安全。如果安全,则返回类型转换后的值;如果不安全,则返回0。什么是安全的转换?安全的指针:指向自身类的对象。指向自身派生的(直接和间接)的类的对象。通...原创 2019-04-22 19:47:51 · 472 阅读 · 0 评论 -
C++虚函数与抽象类
C++虚函数与抽象类1.虚函数I>虚函数声明:在类内的函数声明前加virtual,类外定义时不用加class A {public: A() { } virtual void f();};void A::f() { cout << "A::f()" << endl;}class B : public A{...原创 2019-04-15 15:04:14 · 362 阅读 · 0 评论 -
C++三种继承
C++的三种继承方式1.对比特征 公有继承 保护继承 私有继承 公有成员变成 派生类共有成员 派生类受保护成员 派生类私有成员 受保护成员变成 派生类受保护成员 派生类受保护成员 派生类私有成员 私有成员变成 派生类只能通过基类接口访问 派生类只能通过基类接口访问 派生类只能通过基类接口访问 能否隐式向...原创 2019-04-18 12:29:00 · 217 阅读 · 0 评论 -
C++类型转换运算符
C++类型转换运算符dynamic_cast const_cast static_cast reinterpert_cast1. dynamic_cast这个运算符在RTTI中聊过,适用于有虚函数的继承。它用于继承链中的指针安全的进行转换。可以将一个指向派生类的基类指针转换为派生类指针;如果进行不安全的转换,例如,转换后派生类的指针指向了基类对象,这样的转换就是不安全的,这样运算...原创 2019-04-23 19:48:13 · 495 阅读 · 1 评论 -
C++友元类与友元成员函数
C++友元类和友元成员函数1.友元类如果类A是类B的友元类,则,类A的成员函数都为类B的友元函数声明class B{ friend class A; ...};class A { ...};举例class B{ friend class A;private: int data;public: B(int da...原创 2019-04-19 20:51:05 · 721 阅读 · 0 评论 -
C++嵌套类
C++嵌套类1.什么是嵌套类将一个类的定义放到另一个类中,这个类就叫嵌套类2.嵌套类的作用域(可见性)嵌套类的作用域与定义的位置有关I>声明在私有区域(private)仅在外围类内部可见也就是说,这种情况下,嵌套类的实例化对象可以当作外围类的数据成员,也可当作外围类的成员函数的参数或者在成员函数内部实例化。class Outer {private: ...原创 2019-04-19 22:52:23 · 3547 阅读 · 0 评论 -
C++默认生成的成员函数
C++默认生成的成员函数默认构造函数(如果未显式声明构造函数) 默认复制构造函数(如果未显式声明复制构造函数) 析构函数(如果未显式声明析构函数) =赋值运算符函数(如果未显式声明) &取地址运算符函数(如果未声明)首先明确一点,分配对象空间后,一定会调用构造对象空间释放前,一定会调用构造至于为什么析构在释放之前调用,是因为如果对象如果先释放,那么就没有对象了,而析构函数又...原创 2019-04-13 13:19:36 · 642 阅读 · 0 评论 -
C++静态成员变量
C++静态成员变量(static)1.非const静态成员变量要点:类内声明 类外定义 /*类的声明放在头文件中*/class class_name{private: static typeName name; ...};/*类中的非const静态成员,函数成员在cpp文件定义*/typeName class_name::name = value...原创 2019-04-13 11:44:07 · 300 阅读 · 0 评论 -
C++的const对象与const成员函数
C++的const对象与const成员函数1.奇怪的报错class A{private: int a;public: void show();};void A::show(){ cout << a << endl;}int main(){ const A obj; obj.show(); retu...原创 2019-04-09 13:03:05 · 273 阅读 · 0 评论 -
C++内联函数
C++内联函数1.关键字 inline函数声明inline<返回值类型> <函数名>(<形参列表>);函数定义inline<返回值类型> <函数名>(<形参列表>){/代码块/ }2.和普通函数的区别普通函数的调用:普通函数调用时,通过地址跳转来执行被调函数的指令,函数指令执行完毕后,要返回...原创 2019-03-28 23:04:13 · 66 阅读 · 0 评论 -
C/C++函数原型
C/C++函数原型与函数定义1.返回值函数定义的返回值:被调函数在返回一个数据的时候,会将返回值放在一块空间(内存或者寄存器),所以,函数定义的返回值决定被调函数返回什么值,也就是说,被调函数要把这个返回值放到多大的内存中(不同类型占用空间大小不同不同)函数原型的返回值:被调函数返回一个值(将返回值放在某一空间)后,主调函数会得到这个返回值的地址,除了知道地址,还要知道空间大小...原创 2019-03-25 22:57:26 · 860 阅读 · 0 评论 -
C++函数返回引用
c++返回引用1.形式<类型>&函数名(参数)例:int &Swap(int &a, int &b);int main() { int a = 3, b = 5; cout << "交换前:a = " << a << ", b = " << b << ...原创 2019-03-31 13:25:20 · 13265 阅读 · 0 评论 -
C++实参默认值
C++函数参数默认值1.在原型声明(如果没有原型,在定义的时候声明)刚开始学C++的时候,由于刚学完JAVA,在定义类的构造函数的时候,习惯性的使用无参构造调用有参的构造,结果C++的构造函数不能相互调用,这样就会很麻烦,如果要写有参的构造,则必须写一个无参构造。其实不用,参数默认值很好的解决了这个问题int sum(int numb1 = 0, int numb2 = 0);i...原创 2019-03-31 13:57:20 · 375 阅读 · 0 评论 -
C++函数重载
C++函数重载1.多态之一——函数重载在C中,每一个函数的名字是它的唯一标识,也就是说,在C语言中,不能有名字相同的两个函数。C++中,允许出现函数名相同,但函数特征标不同的函数。2.函数特征标——形参列表(跟返回值无关)i>重载条件函数名相同 形参个数不同 若形参个数相同,则对应位置的参数类型不全相同ii>注意某一类型和他的引用类型不能重载例...原创 2019-03-31 20:49:09 · 145 阅读 · 0 评论 -
C++构造函数与析构函数
C++构造函数与析构函数1.构造函数——初始化成员的函数A.构造函数的形式构造函数没有返回值(连void都没有) 构造函数与类名同名 构造函数可以重载 C++中,构造函数不能相互调用来构造同一个函数 class A{private: int a;public: A(int a = 0);};A::A(int a){ this->a...原创 2019-04-10 14:11:12 · 156 阅读 · 0 评论 -
C++为什么“没有调用”构造,但却调用了析构——其实调用了
C++忽略了默认复制构造函数造成的疑惑:为什么“没有调用”构造,但却调用了析构提前说一下,不是没有调用,所有对象创建时,一定调用,但是某些情况下会调用系统生成的构造先来看一段诡异的代码:class A {private: int a;public: A(int a = 0); ~A();};A::A(int a) { this->a =...原创 2019-04-10 14:33:09 · 989 阅读 · 1 评论 -
链接属性再总结
链接属性再总结1.extern int a = 1;和extern int a;的区别代码块之外extern int a = 1;int a = 1;上述代码没有任何区别,代码快之外,在缺省关键字extern情况下,变量a的默认链接属性就是external,extern int a = 3;表示在显式地声明这个变量的链接属性时external上面的代码会在静态内存中分配空...原创 2019-04-11 10:34:07 · 246 阅读 · 0 评论 -
C++重载运算符
C++多态之一,重载运算符——通过运算符函数实现1.运算符函数<返回值类型> operaotr op (参数);operator:关键字 op : 要重载的运算符class Int {private: int data;public: Int(int x = 0); int operator + (const Int &obj) c...原创 2019-04-11 13:16:06 · 243 阅读 · 0 评论 -
C++友元函数
友元函数1.友元函数是什么?将一个函数在类内声明为该类的友元,那么这个函数就叫这个类的友元函数;友元函数有访问类内私有成员的权限。友元函数不属于类,但有访问私有的权限2.friend关键字通过friend关键字,可以将一个函数声明为一个类的友元。class className{ ... friend typeName function (args); ...原创 2019-04-11 13:42:47 · 187 阅读 · 0 评论 -
C++类的自动转换和转换函数
C++类型的转换以及类的转换函数1.通过构造函数,将其他的类型进行转换例如:class_name obj_name = 5;如果class_name类存在一个接收整型的构造函数,就可以执行。举个例子://类Bclass B {private: int x;public: B(int x) { this->x = x; ...原创 2019-04-11 16:36:40 · 646 阅读 · 0 评论 -
C++名称空间
c++名称空间1.声明区域和潜在作用域i>声明区域声明区域就是可以进行声明的区域:函数外(全局) 函数内(代码块)ii>潜在作用域潜在作用域:从声明处开始到声明区域结束“潜在”的含义:主要是因为同名局部变量可以隐藏全局变量,注意,仅仅是隐藏,我们仍然可以使用。int b = 3;int main() { int b = 1; ...原创 2019-04-02 13:17:56 · 220 阅读 · 0 评论 -
C++类和结构的区别以及内联成员函数
C++类和结构的区别 & 内联成员函数1.基本类型基本类型说明3个点所占内存空间的大小 内存中的二进制怎么解释(int——补码,char——ASCII/Unicode) 可以进行的操作(int——+,-,*,/,%等)2.类——自定义的一种类型类 = 基本类型 + 成员函数(方法)类中的成员变量决定了类对象所占的空间大小 类对象内存中的二进制分解为成员变量,逐个...原创 2019-04-08 23:09:45 · 212 阅读 · 0 评论 -
C++对象与this指针
C++对象与this指针1.内存中的对象同类的不同对象数据独立,每一个对象都有独立的单元存储对象的数据成员 同类对象共享成员函数的代码块既然所有对象共享函数,那么,怎么知道那个对象在调用呢?2.this指针指向的对象调用成员函数函数调用时,object.function(),会将指向object的一个指针作为隐藏的参数传给function,,这样,函数就明白是那个对象在调用.这...原创 2019-04-09 12:47:53 · 407 阅读 · 0 评论 -
C++异常处理机制
C++异常机制1.异常处理的3个组成部分使用try块 throw引发异常 catch捕获异常使用:try{ throw [对象]; try块中放可能会引发异常的调用等操作}catch(类型 变量名){ catch会捕获和圆括号中类型相同的异常(通过throw引发的)}一个try块可以有多个catch块执行过程:首先执行try块中的代...原创 2019-04-20 10:55:12 · 1111 阅读 · 0 评论