网易云课堂_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]要求完全相同. 如果 ...
随机推荐
- 那些年的那些事CISC和RISC发展中的纠缠
本文来自http://www.cnbeta.com/articles/224544.htm ARM.ARM.ARM,没错ARM仿佛一夜之间就火了,平板.手机等领域随处可见它的影子,甚至已经有人预言未来 ...
- 剑指offter-面试题7.用两个栈实现队列
题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead 分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: template <typ ...
- OpenJudge Trans
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include ...
- Jconsole: JAVA 监视和管理控制台简介
Jconsole: JAVA 监视和管理控制台简介 JDK中除了提供大量的命令行之外,还提供两个功能强大的可视化工具:JConsole和VisualVM. 之前对java的调试一直停留在 右键-> ...
- Sublime Text 3 乱码解决
步骤: 在Sublime Text里,按ctrl+`,打开Console,一次性输入如下代码: import urllib.request,os; pf = 'Package Control.subl ...
- iOS8使用Core Graphics实现渐变效果-Swift基础教程
Core Graphics是一个强大的底层API,在这篇教程中我们主要使用Core Graphics来实现渐变效果,为了简单起见,我们采用线性渐变.线性渐变是从起点到终点颜色进行顺序渐变.教程在iOS ...
- Ubuntu14.04搭建安装svnserver
前两天,公司准备搭建一个svnserver,供大家使用.于是.就先装了一个Ubuntu系统,然后搭建了svnserver的环境.以下把svn搭建的详细过程描写叙述下: 1.安装svn sudo apt ...
- tomcat使用说明
tomcat使用说明 1.tomcat的目录结构及说明: 2.发布WEB应用 1).将应用目录达成war包.(将html.jsp.images.WEB-INF目录和当前目录下的所有后缀名为jsp. ...
- ASP.net+SQL server2008简单的数据库增删改查 VS2012
工具:VS2012 数据库:SQL server 简单说明:根据老师上课给的代码,进行了简单的改正适用于VS2012环境,包括注册.登录.查询.修改.删除功能,多数参考了网上的代码 百度云源代码连接t ...
- Android Geocoder(位置解析)
Android中提供GPS定位服务,同时开发者可以对获得的位置信息进行解析,可以获得位置的详细信息. 1.gps定位 在Eclipse中建立android应用程序.android sdk中提供了loc ...