课时12构造函数与析构函数-2

构造函数

构造函数可以有多个

构造函数可以重载

构造函数用于隐式类型转换

class Student
{
public:
explicit Student(int ssID) :id_(ssID)
{
std::cout << "constructing student:" << ssID << std::endl;
}
private:
int id_;
}; void func(Student& stu)
{ }

课时15动态内存分配-1

动态内存分配

C语言的动态分配

malloc/free函数

内存区域

全局变量、静态数据、常量->data area

所有类成员函数和非成员函数代码->code area

为运行函数而分配的局部变量、函数参数、返回数据、返回地址等->stack area

动态内存分配区->heap area

课时18拷贝构造函数-2

拷贝构造函数

何时需要定义拷贝构造函数

类数据成员有指针

泪数据成员管理资源(如打开一个文件)

如果一个类需要析构函数来释放资源,则它也需要一个拷贝构造函数

如果想禁止一个类的拷贝函数,需要将拷贝函数声明为private

课时19const关键字

const关键字

C++提供了const限定符

指定一个不该被改动的对象

const限定指针类型

const出现在星号左边,表示被指物是常量

const出现在星号右边,表示指针自身是常量

const数据成员必须使用成员初始化列表进行初始化

课时21案例讲解--单例设计模式

案例讲解

单例设计模式

案例介绍

保证在应用程序中,一个类只有一个对象

案例设计

将构造函数设置为私有,在类的实现中确保生成对象的个数

头文件singleton.h

源文件singleton.cpp,main.cpp

头文件singleton.h

#pragma once
#include <iostream> class Singleton
{
public:
static Singleton* getInstance(); void doSomething(); void destroy(); private:
Singleton();
~Singleton(); Singleton(const Singleton&);
Singleton& operator=(const Singleton&); static Singleton* instance;
};

源文件singleton.cpp

#include "singleton.h"

Singleton* Singleton::instance = NULL;

Singleton::Singleton()
{
std::cout << "Singleton instance" << std::endl;
} Singleton::~Singleton()
{ } void Singleton::destroy()
{
delete this;
instance = NULL;
} Singleton* Singleton::getInstance()
{
Singleton* ret = instance;
if (ret == NULL)
{
instance = new Singleton();
ret = instance;
} return ret;
} void Singleton::doSomething()
{
std::cout << __func__ << ", " << __LINE__ << std::endl;
}

源文件main.cpp

#include "singleton.h"

int main()
{
Singleton::getInstance()->doSomething(); system("pause"); return 0;
}

课时22案例讲解--valgrind内存检测工具

Linux安装valgrind命令

sudo apt-get install valgrind

检查valgrind

which valgrind

网易云课堂_C++开发入门到精通_章节3: 类、对象和封装的更多相关文章

  1. 网易云课堂_C++开发入门到精通_章节7:模板

    课时35类模板 类模板 创建类模板的实例 class Name<类型参数表>object; 类模板与模板类的区别 类模板是模板的定义,不是一个实实在在的类,定义中用到通用类型参数 模板类是 ...

  2. 网易云课堂_C++开发入门到精通_章节8:设计模式

    课时44设计模式简介 设计模式简介 面向对象设计的第一个原则:针对接口编程,而不是针对实现编程 接口->指针 实现->实例 若已存在一个类Class A,现在希望复用Class A,则有以 ...

  3. 网易云课堂_C++开发入门到精通_章节6:多态

    课时33示例--为多态基类声明虚析构函数 微软校园招聘笔试题 #include <iostream> class Base { public: char Value() { return ...

  4. 网易云课堂_C++开发入门到精通_章节4:运算符重载

    课时23运算符重载 运算符重载 重载赋值运算符 Person& Person::operator=(const Person& other) { //检查自赋值 if (this == ...

  5. 网易云课堂_C++开发入门到精通_章节2:引用和函数的高级用法

    课时6函数重载 函数重载 在C语言头文件中的extern "C" //常见的C语言头文件格式 #ifndef _FUNC_ #define _FUNC_ #ifdef __cplu ...

  6. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)

    第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  7. 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)

    第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回   提交作业(截止时间已过) 完成并提交作业     作业批改 互评训练   互评作业   自评作业     成绩公布 查看成绩 温 ...

  8. 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)

    第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...

  9. 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)

    1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...

随机推荐

  1. UVA 1599 Ideal Path(bfs1+bfs2,双向bfs)

    给一个n个点m条边(<=n<=,<=m<=)的无向图,每条边上都涂有一种颜色.求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小.一对 ...

  2. 武道释义 &#183; 零散

    若是你防御你的左边.你的右边必定是弱点: 若是你防御你的前面,你的后面必定是弱点. 若是你处处小心防御,则必定处处都是弱点." 有些武术尽管先声夺人.但却如喝渗水之酒,令人越瞧越觉无味: 但 ...

  3. Base64编码和解码算法

    Base64么新鲜的算法了.只是假设你没从事过页面开发(或者说动态页面开发.尤其是邮箱服务),你都不怎么了解过,仅仅是听起来非常熟悉. 对于黑客来说,Base64与MD5算法有着相同的位置.由于电子邮 ...

  4. git使用图解

    使用前 安装git 配置name 和 email git config --global user.name "Your Name" git config --global use ...

  5. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  6. 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap

    突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...

  7. VS2013报表设计常用表达式

    一.页眉 1."日期"表达式:="日期: "& Today.ToShortDateString() 效果: 2.格式化日期:="日期: &qu ...

  8. Android app去应用市场评分功能

    因为android市场很多,去各个应用市场评分的功能却不是很难实现. private void gotoRate(){ Uri uri = Uri.parse("market://detai ...

  9. 使用react-native做一个简单的应用-02项目搭建与运行

    下面我们开始着手去做这一个项目,因为初学不久就开始边学边做,所以有些地方设计不太合理.请大家多多包涵.0.0 下面来介绍截图中的三个文件夹, GuoKuApp:是我开发app的文件夹. GuoKuDB ...

  10. Oracle 11g完全卸载(Windows)(转)

    Oracle 11g完全卸载(Windows) 1.关闭oracle所有的服务.可以在windows的服务管理器中关闭:    一般有以下服务:   (1)Oracle SID VSS Writer ...