课时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. 【转】Linux里如何查找文件内容

    原文网址:http://blog.chinaunix.net/uid-25266990-id-199887.html Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ g ...

  2. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  3. Code Generation and T4 Text Templates

    Code Generation and T4 Text Templates Code Generation and T4 Text Templates

  4. PHP MySQL Where 子句 之Where

    WHERE 子句 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句. 语法 SELECT column FROM table WHERE column operator va ...

  5. Agent J(求三个圆围成的区域面积)

    A - A Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status P ...

  6. easy ui 如何单个引用其中某个插件?

    记录一下这个方法,前端时间一直在纠结这个问题,后来听一些前辈讲解后才恍然大悟,要单独引用某个插件,我们需要重视的是:easyloaer.js ,easy ui的下载包中也有easyloader的dem ...

  7. 带你走近AngularJS - 创建自己定义指令

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自己定义指令 ------------ ...

  8. VS2012+SQL2008+ODBC编程,第一篇博客,写的不好忘各位大神指点一二~

    近期写一个数据库的课程设计,用的是C++ MFC .最開始用的是ADO技术,可是苦于网上大部分的教程都是VC6.0的,对着教程敲了4,5遍还是执行不成功.我用的IDE是VS2012,毕竟VC6.0和V ...

  9. PHP: configure: error: mysql configure failed. Please check config.log for more information.

    为php增加mysql模块时报错 configure: error: mysql configure failed. Please check config.log for more informat ...

  10. 将mysql服务加入到系统服务中 服务器配置 注销时不会关闭mysql

    将mysql加入系统服务中: 或者在cmd中输入:mysql安装路径\mysql\bin\mydqld.exe --install mysql --defaults-file="mysql安 ...