大傻与小火机写字的地方


  • 首页

  • 分类

  • 归档

  • 关于

  • 标签

公有/私有/保护继承 继承与组合 overload/overwrite/override之间的区别

发表于 2018-04-20 | 分类于 再学C++ |

公有/私有/保护成员

在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
在关键字protected后面声明,与private类似,其差别表现在继承与派生时对派生类的影响不同

公有/私有/保护继承

private成员任何形式继承,均不可访问。private继承,所有成员私有化。protected继承,public转为protected。

阅读全文 »

运算符重载以成员函数方式重载 以友元函数方式重载

发表于 2018-04-19 | 分类于 再学C++ |

运算符重载

运算符重载,本质上是函数重载。运算符重载不允许发明新的运算符。不能改变运算符操作对象的个数。
运算符被重载后,其优先级和结合性不会改变。

成员函数重载

成员函数原型的格式:函数类型 operator 运算符(参数表);

成员函数定义的格式:

函数类型 类名::operator 运算符(参数表)
{
    函数体;
}
阅读全文 »

友元函数与友元类

发表于 2018-04-18 | 分类于 再学C++ |

友元介绍

类的外部函数只能访问类的公有成员,友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元(友元函数),也可以把整个类指定为另一个类的友元(友元类)。

友元函数

友元函数在类作用域外定义,但它需要在类体中进行说明。友元的作用在于提高程序的运行效率,无需调用接口函数,访问私有数据。

为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下:
friend 类型 友元函数名(参数表);

阅读全文 »

static与单例模式 const成员函数/const对象/mutable修饰符

发表于 2018-04-17 | 分类于 再学C++ |

static与单例模式

单例模式保证一个类只有一个实例,并提供一个全局访问点,禁止拷贝

阅读全文 »

四种对象生存期和作用域 static用法总结

发表于 2018-04-17 | 分类于 再学C++ |

四种对象生存期和作用域

程序内存空间: 代码段,数据段,堆栈段
文本段。存储可执行文件的指令;也有可能包含一些只读的常数变量,例如字符串常量等。

栈对象

隐含调用构造函数

堆对象

隐含调用构造函数,要显式释放

阅读全文 »

static成员变量 static成员函数 类/对象大小计算

发表于 2018-04-16 | 分类于 再学C++ |

static成员变量

非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在,它是与类关联的对象,不与类对象关联。

static成员的定义

static成员需要在类定义体外进行初始化与定义

特殊的整型static const成员

整型static const成员可以在类定义体中初始化,该成员可以不在类体外进行定义

阅读全文 »

深拷贝与浅拷贝 禁止拷贝 空类与空数组

发表于 2018-04-16 | 分类于 再学C++ |

深拷贝与浅拷贝

一个类有指针成员,如果在拷贝的时候顺带连指针指向的内存也分配了,就称为深拷贝。如果只是分配指针本身的内存,那就是浅拷贝

浅拷贝造成的问题是有两个指针指向同块内存,delete其中一个指针,那么剩下的指针将成为野指针。编译器生成的默认拷贝构造函数和赋值运算符是浅拷贝的

阅读全文 »

构造函数初始化列表(const和引用成员) 拷贝构造函数

发表于 2018-04-16 | 分类于 再学C++ |

构造函数初始化列表

构造函数的执行分为两个阶段

  1. 初始化段
  2. 普通计算段

在普通计算段中,其实是赋值操作,推荐在构造函数初始化列表中进行初始化

阅读全文 »

构造函数与默认构造函数 赋值与初始化 explicit关键字

发表于 2018-04-15 | 分类于 再学C++ |

构造函数 默认构造函数

构造函数是为了保证对象的每个数据成员都被正确初始化,通常情况下构造函数应声明为公有函数,一般被隐式地调用。构造函数被声明为私有有特殊的用途,比如单例模式

栈上的对象生存期到了会自动调用析构函数;
new operator做了两件事,一个是创建了对象内存,一个是调用构造函数;
堆上的内存需要delete释放,做了两件事,一是调用析构函数,二是释放内存。堆上new的对象,不delete的话,不会自动调用析构函数

阅读全文 »

类声明 内联成员函数 类与结构体 this指针 前向声明 嵌套类

发表于 2018-04-05 | 分类于 再学C++ |

类的声明

在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
在关键字protected后面声明,与private类似,其差别表现在继承与派生时对派生类的影响不同

内联成员函数

内联函数,编译的时候将代码直接嵌入到调用的地方,从而减少函数调用的开销,从而提高效率。内联只是对编译器的建议,实际上即使加了inline也不一定宏展开,比如遇到switch,for语句的时候就往往不会。

类内部实现的函数都是内联函数。若在类内部实现,inline关键字可加可不加;
在类外部实现,需加inline,如inline void Clock::SetHour(int hour) { }。

阅读全文 »
1…678…11
Shaojie Li

Shaojie Li

学习总结 思考感悟 知识管理

107 日志
15 分类
15 标签
RSS
© 2017 — 2019 Shaojie Li
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4