C++学习历程14:友元 C++规则中,类的私有属性类外不可访问,如果想访问怎么办,就要用到友元,即让类外可以访问其私有属性。友元的三种实现 全局函数做友元 类做友元 成员函数做友元 1.全局函数做友元class Building{ //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void goodGay(Building * building);public: Building() { this->m_S
C++学习历程13:静态成员及this指针 1.属性和方法的存储方式只有非静态成员变量才属于类的对象上class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间,所有函数共享一个函数实例 void func() { cout << "mA:" << this->mA << endl; } //静态成员函数也不占对象
C++学习历程12:构造和析构 1.构造析构的意义 构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。 析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。 2.语法构造函数语法:类名(){} 构造函数,没有返回值也不写void 函数名称与类名相同 构造函数可以有参数,因此可以发生重载 程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次 析构函数语法: ~类名(){} 析构函数,没有返回值也不写voi
C++学习历程11:封装 1.封装的意义 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 意义1:在设计类的时候,属性和行为写在一起,表现事物。class Circle{public: //访问权限 公共的权限 //属性 int m_r;//半径 //行为 //获取到圆的周长 double calculateZC() { //2 * pi * r //获取圆的周长 return 2 * PI * m_r; }};类中的变量称为成员变量 又称
C++学习历程10:函数进阶 1.函数默认参数int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数int func2(int a = 10, int b = 10);int func2(int a, int b) { return a + b;}2. 占位参数//函数占位参数 ,占位参数也可以有
C++学习历程9:引用 1.使用语法: 数据类型 &别名 = 原名int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 100; cout << "a = " << a << endl; cout << "b = " <<
C++学习历程8:内存分区 1. 内存四区C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 1.1 程序运行前在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域代码区:存放 CPU 执行的机器指令代码区是共享的,共享的目的是对于频繁被执行的程序,
C++学习历程7:结构体 1.结构体定义 struct 结构体名 变量名 struct 结构体名 变量名 = { 成员1值 , 成员2值...} 定义结构体时顺便创建变量 struct student{ //成员列表 string name; //姓名 int age; //年龄 int score; //分数}stu3; //结构体变量创建方式3 struct student stu1; //struct 关键字可以省略// 创建方式 stu1.name = "
C++学习历程6:指针 1.定义int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据类型 * 变量名 ; int * p; //指针变量赋值 p = &a; //指针指向变量a的地址 cout << &a << endl; //打印数据a的地址 cout << p << endl; //打印指针变量p //2、指针的使用 //通过*操作指针变量指向的内存 cout <
C++学习历程5: 函数 1.定义int add(int num1, int num2){ int sum = num1 + num2; return sum;}2. 调用int main() { int a = 10; int b = 10; //调用add函数 int sum = add(a, b);//调用时的a,b称为实际参数,简称实参 cout << "sum = " << sum << endl; return 0;}a,b 为实际参数即实参
C++学习历程4: 数组 1.一维数组1.1 特点特点1:数组中的每个==数据元素都是相同的数据类型==特点2:数组是由==连续的内存==位置组成的1.2 定义方式1. ` 数据类型 数组名[ 数组长度 ]; `2. `数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};`3. `数据类型 数组名[ ] = { 值1,值2 ...};`int score[10];int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };int sco...
C++学习历程3:程序结构 1.选择结构 cin >> score; // if else 会进一个if条件语句 if (score > 600) { cout << "我考上了一本大学" << endl; } else if (score > 500) { cout << "我考上了二本大学" << endl; }1.1 三目运算符c = a > b ? a : b; // if a>b:c=a;
C++学习历程2: 1.字符串定义方式 char str[] ="hello world"; cout << str << endl; string str1 = "Hi C++ learner"; cout << str1 << endl;#include <string> 有时需要。 VS2019不需要这个头文件也能使用string这个类型。2. Bool类型占空间大小 bool flag = true; cout <<.
c++学习历程1: 1.打印 hello world 及注释方法#include <iostream>using namespace std;void main(){ cout << "hello world" << endl; system("pause");}// 这是单行注释/*这是多行注释*/2. 常量的两种方式#include <iostream>using namespace std;#define jul 7 //没有;
我认为的python yield 关键字 在学习python时被yield搞晕了头,像是return又不像是return,所以自己研究了下。如有不对的地方还请大家谅解。def createGenerator(): mylist = range(3) for i in mylist: yield i*iobj = createGenerator() #一个迭代器但不执行print(obj.__nex...
Python openpyxl 实现修改表格,设置单元格数据缩进 如上篇博客所言,我要将word文档中表格的数据提取出来再粘贴到已有的表格中,xlsxwriter 只能写入一个新的表格,因此只能用 openpyxl来实现将提取出来的数据写入。具体代码如下:import openpyxlfrom openpyxl.styles import Alignmentfile_req ="req.xlsx"wb_req = openpyxl.load_wor...
python-docx 识别表格在docx文档中的所在位置 由于工作需要提取一个word文档中的表格,及其所在的章节,普通的Document.paragraphs 和Document.tables无法满足需求。所以综合GitHub作者的代码及我自己的需求代码如下:from docx.document import Documentfrom docx.oxml.table import CT_Tblfrom docx.oxml.text.parag...
“IDLE's subprocess didn't make connection. Either IDLE can't start a subprocess or personal firewall 写多线程程序时突然遇到IDLE无法打开错误提示如下:“IDLE's subprocess didn't make connection. Either IDLE can't start a subprocess or personal firewall software is blocking the connection.” 原因就是新建的程序中和python模块zhon中的名字一样...
不确定长度的一堆数据,选出出现频率最高的一个 原本打算选用数组这种数据结构用来存放数据,可是不确定识别出来直线的个数。想了很久决定用vector来实现 代码如下:其中push_back要push自己循环得到的数据。#include<vector>using namespace std;void main(){ vector<int> v1; for( int i = 0; i < 5; i+...