课时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. VC使用#定义方便控制版本号的宏

    一个 VC Project 中,可能有很多地方需要用到版本号,比如 About 对话框.版本资源等.如果每次版本更改都一一去改变这些值,不但非常麻烦,而且有悖唯一原则. 巧妙地使用宏定义,可以很好地解 ...

  2. Amazon Redshift and Massively Parellel Processing

    Today, Yelp held a tech talk in Columbia University about the data warehouse adopted by Yelp. Yelp u ...

  3. HBase 6、用Phoenix Java api操作HBase

    开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...

  4. Unity 生命周期

    原文翻译:            Execution Order of Event Functions            事件函数的执行顺序                        Edit ...

  5. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  6. uva 714 - Copying Books(贪心 最大值最小化 二分)

    题目描写叙述开头一大堆屁话,我还细致看了半天..事实上就最后2句管用.意思就是给出n本书然后要分成k份,每份总页数的最大值要最小.问你分配方案,假设最小值同样情况下有多种分配方案,输出前面份数小的,就 ...

  7. [置顶] 软件设计之道_读书纪要.doc

    本系列的文档都是我读书后的个人纪要,如想了解更多相关内容,请购买正版物.对应的图书可以从我的个人图书列表里找寻:个人毕业后图书列表 1.  每个写代码的人都是设计师,团队里每个人都有责任保证自己的代码 ...

  8. 提高你的Java代码质量吧:小心switch带来的空值异常

    一.分析  使用枚举定义常量时,会有伴有大量的switch语句判断,目的是为每个枚举解释其行为. 我们知道,目前的Java的switch语句只能判断byte.short.char.int类型(JDK7 ...

  9. ASP.NET通用权限验证组件实现

    沙发(SF)通用权限验证组件 开篇 本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 1.   类介绍 1.SFWebPermissio ...

  10. C#中的多线程使用 -- Thread 类详解(转)

    现在C#已经建议摈弃使用 Suspend, Resume 暂停/恢复线程, 也尽量少用 Abort方法中断一个线程. 建议使用线程的同步手段有: Mutex.ManualResetEvent.Auto ...