随笔分类 - 编程语言
摘要:创建虚拟环境 激活虚拟环境 使用 conda 安装 pip 查看路径 pip show numpy 查看所有的虚拟环境 conda info -e 当前激活的环境带 * 6.指定 python 版本创建虚拟环境 conda create -n test-env python=3.8 7.pip co
阅读全文
摘要:print 函数 input 函数 案例一:圆的周长 import math s=input("圆的半径:\n") s=float(s) c=2*math.pi*s print(f"圆的周长,{c:.2f}") w=input("请输入天气情况(可选项:晴、阴):") if w=="晴天": pri
阅读全文
摘要:多态是 C++ 面向对象三大特性之一,思考我们为什么要学习多态? 在C++中,多态的实现是通过覆盖(override),而决定是否覆盖函数的关键点在于该基类中的函数是否有关键字 virtual,此函数被称为虚函数。 多态的优点 代码组织结构清晰 可读性强 利于前期和后期的扩展以及维护 1. 多态分成
阅读全文
摘要:在多态中,通常父类中的虚函数实现是毫无意义的,主要是调用子类重写的内容,因此可以将虚函数改为纯虚函数 纯虚函数语法:virtual 返回值类型 函数名(参数列表)= 0; 当类中有了纯虚函数,这个类也成为抽象类 抽象类特点 无法实例化对象 子类==必须重写抽象类中的纯虚函数==,否则也属于抽象类 #
阅读全文
摘要:多继承语法 C++ 允许一个类继承多个类(一个子类多个父类)————> C++ 实际开发中不建议用多继承 语法:class 子类 : 继承方式 父类1,继承方式 父类2... 注意:多继承可能会引发父类中有同名成员,需要加作用域区分。 #include <iostream> using namesp
阅读全文
摘要:五、继承同名成员处理方式 问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢 ? 访问子类同名成员,子类对象直接访问即可 访问父类同名成员,子类对象需要加作用域 如果子类中出现和父类同名的成员函数,子类的同名成员,会隐藏掉父类中所有同名成员函数,如果想访问被隐藏的同名
阅读全文
摘要:继承的好处:减少重复的代码 一、继承的基本语法 class 子类 : 继承方式 父类 子类也称为派生类 父类也成为基类 1. 派生类中的成员,包含两大部分: 一类是从基类继承过来的 一类是自己增加的成员 注:从基类继承过来的表现其共性,而增加的成员体现了其个性。 二、继承的方式 继承方式一共有三种
阅读全文
摘要:运算符重载 1. 运算符重载:使同一个运算符作用于不同类型的数据时导致不同的行为的这种机制被称为运算符重载。 2. 在c++中,除了以下5个运算符之外,其余运算符均可以被重载 成员选择运算符 . 成员指针运算符 .* 作用域分辨符 :: 三目选择运算符 ?: 计算数据所占内存空间的大小:sizeof
阅读全文
摘要:3. 递增运算符重载(++、--) 作用:通过重载递增运算符,实现自己的整型数据 注意:前置递增返回引用,后置递增返回值 // 首先你要搞明白 前置++ 与 后置++ 区别; int a = 10; cout << ++a <<endl; // 11 cout << a <<endl; // 11
阅读全文
摘要:运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 对于内置的数据类型的表达式的运算符是不可能改变的 可以通过自己写成员函数,实现两个对象相加属性后返回信的对象 Person Personaddperson(Person &p) { Person temp; temp m
阅读全文
摘要:C++提供了另一种形式权限 友元 :———— ==破坏了类的封装性==。 友元的目的: 让一个函数或者类,访问一个类中私有成员 友元的关键字:==friend== 1. 友元有三种:友元函数、友元类、友元成员函数。 友元的三种实现 全局函数 做友元 类 做友元 成员函数 做友元 注: (1)友元需要
阅读全文
摘要:const 限定只读 ,对函数的实参进行保护 常数据成员:必须出现在 类的定义体 中,常数据成员必须==进行初始化==,并且不能被更新,但常数据成员的初始化==只能通过构造函数的初始化列表==进行 1. 常函数 成员函数加const 后我们称为这个函数为常函数 常函数内 不可以修改成员属性 成员属性
阅读全文
摘要:1. 成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上 空对象占用内存空间为:1 ————> C++编译器会给每个空对象也分配一个字节空间,为了区分对象占用内存的位置,也就是说每个空对象应该有一个独一无二的内存地址 #include <io
阅读全文
摘要:使用静态数据成员的优势: 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。 可以实现信息隐藏,静态成员可以是private成员,而全局对象不能。 静态数据成员不属于任何对象,不因对象的建立而产生,也不因对象的析构而删除 它是类定义的一部分,故使用静态数据成员不会破
阅读全文
摘要:C++类中的成员可以是另一个类的对象,我们成该成员为对象成员 当其他类对象作为本类成员,构造时候先构造类对象,再构造自身 析构的顺序与构造相反
阅读全文
摘要:C++提供了初始化列表语法,来初始化属性 构造函数的初始化列表 语法:
阅读全文
摘要:对象的 初始化和处理 也是两个非常重要的安全问题,C++利用 构造函数和析构函数 解决上述问题。==这两个函数会被编译器自动调用==,如果 我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数是空实现。 构造函数:主要作用域创建对象时为对象成员属性赋值,构造函数由编译器自动调用,无须手动
阅读全文
摘要:#include <iostream> using namespace std; //根据点到圆心距离来判断 //点和园关系 //点类 class Circle { public: //设置x; void setx(int x) { m_x=x; } //获取x; void getx() { ret
阅读全文
摘要:前言 C++面向对象的三大特性为:封装、继承、多态 C对C++说你为什么比我麻烦啊?C++说因为我有对象,你没有啊。(好大一口狗粮) 小例子:车可以作为对象,属性有轮胎、方向盘、车灯等等;行为有载人、放音乐等等。 具有相同性质的对象,我们可以抽象的称为类。 4.1 封装 4.1.1 封装的意义 封装
阅读全文
摘要:3.1 函数默认值 在c++中,函数的形参列表是可以有默认值的。 语法:返回值类型 函数名 (参数 = 默认值){ } #include <iostream> using namespace std; //函数的默认参数 //如果我们自己传入数据,就用自己的数据;如果没有,就用默认值 int fun
阅读全文