网易云课堂_C++开发入门到精通_章节3: 类、对象和封装
课时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: 类、对象和封装的更多相关文章
- 网易云课堂_C++开发入门到精通_章节7:模板
课时35类模板 类模板 创建类模板的实例 class Name<类型参数表>object; 类模板与模板类的区别 类模板是模板的定义,不是一个实实在在的类,定义中用到通用类型参数 模板类是 ...
- 网易云课堂_C++开发入门到精通_章节8:设计模式
课时44设计模式简介 设计模式简介 面向对象设计的第一个原则:针对接口编程,而不是针对实现编程 接口->指针 实现->实例 若已存在一个类Class A,现在希望复用Class A,则有以 ...
- 网易云课堂_C++开发入门到精通_章节6:多态
课时33示例--为多态基类声明虚析构函数 微软校园招聘笔试题 #include <iostream> class Base { public: char Value() { return ...
- 网易云课堂_C++开发入门到精通_章节4:运算符重载
课时23运算符重载 运算符重载 重载赋值运算符 Person& Person::operator=(const Person& other) { //检查自赋值 if (this == ...
- 网易云课堂_C++开发入门到精通_章节2:引用和函数的高级用法
课时6函数重载 函数重载 在C语言头文件中的extern "C" //常见的C语言头文件格式 #ifndef _FUNC_ #define _FUNC_ #ifdef __cplu ...
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)
第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
- 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)
1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...
随机推荐
- nginx+vaadin配置
nginx+Vaadin的特殊性在于配置WEBSOCKET或LONG_POLLING.网上资料不多,自己多次尝试配置都不成功,后来终于找到这篇说明才得以配置成功,使用效果不错,介绍如下. 1./etc ...
- Pascal's Triangle 解答
Question Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows ...
- Spring整合Quartz
目录[-] 一.Spring创建JobDetail的两种方式 二.整合方式一示例步骤 1.将spring核心jar包.quartz.jar和Spring-context-support.jar导入类路 ...
- libev事件库学习笔记
一.libev库的安装 因为个人的学习环境是在ubuntu 12.04上进行的,所以本节仅介绍该OS下的安装步骤. 使用系统工具自动化安装: sudo apt-get install libev-de ...
- php 中利用json_encode和json_decode传递包括特殊字符的数据
</pre><span style="font-size:24px"></span><pre name="code" ...
- 第一个Spring MVC程序
最近公司项目要开始使用Spring MVC替代Struts2了,就学习了一下Spring MVC的使用.这是第一个Spring mvc程序,分别使用xml和注解两种方式. 一.使用xml格式进行构建 ...
- 解读JavaScript代码 var ie = !-[1,]
var ie = !-[1,]: 这句代码在IE9之前曾被称为世界上最短的IE判定代码.代码虽短但确包含了不少javascript基础知识在里面.在这个例子中代码执行时会先调用数组的toString( ...
- 【贪心】【Uva11729】 Commando War
你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任 ...
- MySQL Update 使用
备忘: USE `xxx`; ; UPDATE `TB_MB_1` T SET T.`MedicalCount` = ( SELECT S.Total-- ,S.`HospitalID` FROM( ...
- UINavigationController 和 UITabBarController
UINavigationController当设置根控制器的时候,意思就是把根控制器压入栈内,当我们push的时候,我们把下一个控制器压入栈内,当我们pop的时候把上面的控制器的内存释放 UITa ...