网易云课堂_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
原文地址:https://www.cnblogs.com/denggelin/p/6194025.html