C++学习记录(更新8.8)

一.构造器和析构器

1.构造器的定义格式为ClassName(),析构器的定义格式为~ClassName()

2.每一个类至少有一个构造器,如果没有,编译器会使用以下语法定义:ClassName::ClassName(){}

3.析构器是可有可无的(可能引起内存泄漏)

二.this指针和类的继承

1.

class Human{
    char fishc;
    Human(char fishc);
}
Human::Human(char fishc){
    fishc=fishc;
}

可以看出两个fishc编译器无法区分清楚,这时候就需要用到this指针。

——this->fishc=fishc;(赋值操作符的左边将被解释为当前对象的fishc树形,右边被解释为构造器的传入来的fishc参数)

2.将基类和子类的继承关系转化为C++代码

——class SubClass:public SuperClass{} 

三.继承机制中的构造器和析构器

1.

Animal::Animal(std::string theName){
    name=theName
}
Pig::Pig(std::string theName):Animal(theName){
}

2.对构造器与析构器进行更进一步的理解(继承机制中的构造器与析构器)eg

#include<iostream>
#include<string>
class Baseclass
{
	public:
		Baseclass();
		~Baseclass();
		void doSomething();
 } ;
 class Subclass:public Baseclass
 {
 	public:
	 Subclass();
 	~Subclass(); 
 };
 Baseclass::Baseclass()
 {
 	std::cout<<"进入基类构造器。。。\n";
 	std::cout<<"我在基类构造器里干了某些事。。。\n\n";
 }
 Baseclass::~Baseclass()
 {
 	std::cout<<"进入基类析构器。。。\n";
 	std::cout<<"我在基类析构器里也干了某些事。。。\n\n";
 }
 void Baseclass::doSomething()
 {
 	std::cout<<"我干了某些事。。。\n\n";
 }
 Subclass::Subclass()
 {
 	std::cout<<"进入子类构造器。。。\n";
 	std::cout<<"我在子类构造器里干了某些事。。。\n\n";
 }
 Subclass::~Subclass()
 {
 	std::cout<<"进入子类析构器。。。\n"; 
 }
 int main()
 {
 	Subclass subclass;
 	subclass.doSomething();
 	std::cout<<"结束程序\n";
 	return 0;
 }

编译出后:

三.访问控制

级别允许谁来访问
public任何代码
protected这个类本身和它的子类
private

只有这个类本身

(注:只要在类里的某个地方写出一个访问级别并在其后加上一个冒号,从那个地方开始往后的所有方法和属性都将受到相应的保护,直到遇到下一个访问级别或者到达这个类的末尾为止)

四.覆盖方法和重载方法

1.关于从基类继承来的方法和保护:

——class Pig:public Animal{...}

C++不仅允许你对在类里定义的方法和属性实施访问控制,还允许你控制子类可以访问基类里的哪些方法和属性。

public

-是在告诉编译器:继承的方法和属性的访问级别不发生任何改变,即public仍可以被所有代码访问,protected只能由基类的子类访问,private则只能由基类本身访问。

protected

-把基类的访问级别改为protected,如果原来是public的话,这将使得这个子类外部的代码无法通过子类去访问基类中的public

private

-是在告诉编译器从基类继承来的每一个成员都当成private来对待,这意味着只有这个子类可以使用它从基类继承来的元素

2.覆盖方法(当我们在基类里提供一个通用的函数,但在它的某个子类里需要修改这个方法的实现)

——在类里重新声明这个方法,然后再改写一下它的实现代码(就像它是一个增加的方法那样)就行啦

3.重载机制使你可以定义多个同名的方法(函数),只是它们的输入参数必须不同。(因为编译器是依靠不同的输入参数来区分不同的方法)

五.

1.友元关系(一个完全无关的类由于某些特殊原因需要访问到某个protected甚至是private成员)

友元关系是类之间的一种特殊关系,这种关系不仅允许友元类访问对方的public方法和属性,还允许友元访问对方的protected和private方法和属性。

2.声明友元关系的语法

——在类声明里的某个地方加上一条friend class**就行了

六.

1.虚方法

int *pointer=new int;
*pointer=110;
std::cout=110;
std::cout<<*pointer;
delete pointer;

最后一步非常必要和关键,这是因为程序不会自动释放内存,程序中的每一个new操作都必须有一个与之对应的delete操作!

2.

内容概要:本文档《Docker 新手入门指南》详细介绍Docker这一开源容器化平台,旨在帮助新手理解并掌握Docker的核心概念和基本操作。文中首先解释了Docker的概念及其相对于传统虚拟机的优势,如更快的启动速度、更低的资源占用和更好的隔离性。接着,文档提供了详细的安装步骤,包括不同操作系统下的安装方法以及针对国内用户的镜像加速配置。随后,文章深入讲解了镜像管理和容器操作的基础命令,如拉取镜像、运行容器等。进一步地,文档介绍了使用Dockerfile构建自定义镜像、实现数据持久化、进行端口映射以及利用Docker Compose管理多容器应用等高级技巧。最后,给出了一些学习建议和注意事项,鼓励读者动手实验并关注安全性。 适合人群:适合对容器技术感兴趣的初学者,尤其是有一定Linux基础或打算深入了解Docker的开发人员。 使用场景及目标:①帮助读者快速上手Docker,掌握从安装到实际操作的一系列技能;②通过实例演示,如构建Python Web服务、部署WordPress和搭建Jenkins环境,让读者能够将所学应用于实际项目中;③强调容器化的优势,如提高部署效率、解决环境差异问题。 阅读建议:建议读者跟随文档逐步操作,亲身体验每个步骤,同时参考官方文档和社区资源,不断实践以巩固所学知识。特别注意安全性和资源管理方面的提示,确保容器环境的安全稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值