- 博客(26)
- 收藏
- 关注
原创 Linux 文件权限管理
另外一种设置方式:u,g,o,a, 分别表示拥有者、群组、其他人、所有人 +表示增加权限 -表示去除权限,=表示设置为某种权限。文件的权限有 r,w,x, r=4,w=2, x=1,例如:chmod 777 [文件名] 所有人都有可读写与执行权限。chmod u=rw,g=rx [file] 拥有者具有读写权限,群组有读、执行权限、其他人权限不会改变。1、修改文件的群组, chgrp [群组名] [文件名]3、修改文件权限, chmod [权限] [文件名]rw- 表示文件群组的权限,可读写。...
2022-08-05 15:41:28
123
原创 Git 指令
gitadd将文件提交到暂存区,可以提交多次。gitcommit-m"注释"将文件提交到仓库。4、gitstatus查看提交状态。5、gitlog查看提交日志。2、创建git仓库(版本库)
2022-07-26 14:18:15
127
原创 Linux 常用基本shell 指令
补充:sudo apt-get install 安装软件sudo apt-get updata 更新tar -jxvf 解压bz2文件sudo vi /etc/vim/vimrc设置vim 编辑器set ts=4设置tab四个空格 set nu设置显示行号
2022-03-01 09:35:38
535
原创 C++ RTTI、dynamic_cast、typeid
一、dynamic_cast主要作用是将父类指针(引用)转换为子类指针(引用)int main(){ //一、dynamic_cast: human *phuman = new man; human &p = *phuman; phuman->eat();//eat()为虚函数,则可以调用 //phuman->sleap(); 基类指针不能直接调用子类的非虚成员函数 ((man*)phuman)->sleep();//C语言转换方法,将基类指针转换为子
2022-02-26 23:21:15
403
原创 C/C++ 结构体内存对齐
C语言内存对齐详解 - wuyudong - 博客园详解参考以上网址#include <iostream>#include"human.h"#include"men.h"using namespace std;//内存对齐struct mystruct1{ char cad; //偏移地址0 double aad; //偏移地址1,不是8的倍数,编译器补充7个字节,从第8个字节开始存储 int iad; //偏移地址16,是4的倍数
2022-02-23 13:18:30
564
原创 C++ 类继承 父类 子类 函数遮蔽
一、派生类 类之间有种层次关系,有父类、子类。 比如车这个类,当成父类(也叫基类、超类)派生出卡车、轿车,他们属于子类/派生类继承:子类可以继承父类的成员函数、变量子类对象创建时,先执行父类构造函数,在执行子类构造函数二、访问权限:public protected private 三、函数遮蔽:在子类中,有与父类同名的函数,那子类无法访问父类的同名函数 有两种方法可以解决:(1)、在子类中的同名函数中去调用父类函数(2)使用usin...
2022-02-12 16:42:29
674
原创 C++ 重载运算符 、析构函数、重载
重载运算符:本质上是一个函数,函数名 operator+运算符(>,<,+,-,=,==,>=,<=等) 有些运算符,我们没有对该运算符进行重载,系统会自动生成该运算符的重载,比如赋值运算符 = Time mytime5(10, 20, 30);//这个调用默认构造函数(无参数) Time mytime6;//这个调用默认构造函数(无参数) mytime6 = mytime5;//这个调用拷贝赋值运算符,如果没有自己定义,编译器自动生成...
2022-02-12 13:54:28
1071
原创 C++ 拷贝构造函数
定义:如果一个类的构造函数的第一个参数是所属类类型的引用,而其他参数都有默认值,这个构造函数就是拷贝构造函数。函数的默认参数必须放在函数声明中,除非该函数没有函数声明。Time.h#ifndef _TIME_H#define _TIME_H#include<iostream>using namespace std;class Timeclass{public: Timeclass() { cout << "调用了Timeclass默认构造..
2022-02-11 17:04:29
475
原创 C++ 指针与引用的区别
C++primer中对 对象的定义:对象是指一块能存储数据并具有某种类型的内存空间一个对象a,它有值和地址&a,运行程序时,计算机会为该对象分配存储空间,来存储该对象的值,我们通过该对象的地址,来访问存储空间中的值指针p也是对象,它同样有地址&p和存储的值p,只不过,p存储的数据类型是数据的地址。如果我们要以p中存储的数据为地址,来访问对象的值,则要在p前加解引用操作符"*",即*p。对象有常量(const)和变量之分,既然指针本身是对象,那么指针所存储的地址也有常量和变量...
2022-02-10 09:07:37
71
原创 C++基本语言 类型转换
1、static_cast静态转换,在编译的时候就完成。用法和C里面的强制类型转换一样double f=100.34f;int i=(int)f;//C语言风格int i2=static_cast<int>(f);//C++风格2、dynamic_cast主要应用于 运行时类型转换和检查。主要用于父类型和子类型之间转换3、const_cast去除指针或引用的const属性const int ai=90;//int ai2=const_cast<int
2022-01-26 14:33:46
656
原创 C++ 语言 迭代器失效
一:送代器简介vector,迭代器是一种遍历容器内元素的数据类型,这种数据类型感觉有点像指针,我们理解的时候就理解为迭代器用来指向容器中的某个元素。string, vector [],很少用[],更常用的访问方式就是用迭代器(更通用)。通过迭代器,我们就可以读容器中的元素值,读string中的每个字符,还可以修改某个迭代器所指向的元素值。类似于++,--等操作list, map ,尽量学会用迭代器来访问容器中的元素。二:容器的迭代器类型...
2021-11-23 13:26:36
872
原创 C++语言 vector类型介绍
本文的主要内容:(1)vector类型简介(2)定义和初始化vector对象(3)vector对象上的操作以及范围for进一步讲解
2021-11-22 12:53:06
1535
原创 C++语言 string
string 定义与初始化string可以看做一个类类型,类似于c中的结构体我们来看一下如何初始化一个string对象,有如下几种方法:也可以直接用字符数组初始化#include<string>//要加上头文件int main(){ int num = 4; string s1 = "I Love China!"; string s2("I Love China!"); string s3 = s2; string s4(num, 'a');//s4=aaaa,相当于
2021-11-20 17:57:48
528
原创 C++语言 const char * 、char const * 、char* const的区别
1、const char * 、char const *这两者是等价的。当我们使用char const *定义一个指针变量时,我们可以使这个指针变量指向别的char型的变量,但不能通过指针来修改这个char的值。但是可以使这个指针指向别的变量。例如:#include "pch.h"#include <iostream>using namespace std;int main(){ char str[] = "I Love China!";//定义一个字符串数组 const
2021-11-19 18:56:09
1614
原创 C++基本语言 内联函数 、const
一、后置返回类型 就是把函数的返回值放在参数列表后面 格式:auto func(int a)->int;//声明 二、内联函数: 在函数定义前增加关键字 inline 当函数体很小时,调用很频繁,改为内联函数,提升效率,普通函数调用时,会进行入栈出栈操作,定义为内联函数后,编译器会根据情况(决定权在编译器),在编译时将调用函数处替换为函数体内的语句,避免了入栈出栈操作。内联函数的定义要放在头文件中(.h文件),这样需要用到这个内联函数的.cpp...
2021-10-11 21:52:04
144
原创 C++基本语言 范围for new内存动态分配 nullptr
一、范围for语句,用于遍历一个序列 int v[] {12, 13, 14, 15}; //for (auto x : v)//数组v中每个元素依次拷贝x中,打印x的值 for(auto &x : v)//x成了v的引用,省略拷贝动作,提高效率 { cout << x << endl; } for (auto x : { 10,20,30,40 }) { cout <&l...
2021-10-10 17:36:36
167
原创 C++基本语言 引用 常量
#include "pch.h"#include <iostream>namespace zhangsan{}void func(int &a, int &b)//参数为引用类型,可以改变外部的值{ a = 5; b = 6;}using namespace std;int main(){ int x=9; std::cout << "Hello World!\n"; std::cout <...
2021-10-09 21:56:56
374
原创 C语言文件处理
一、文件的打开文件在读或写之前,必须要打开,读写结束后,必须要关闭,否则会造成文件不完整或者资源泄露。fopen:文件打开函数,调用方式:FILE *fp; FILE是一个结构体,fp是指向FILE的指针(结构体指针)fp=fopen(路径加文件名,使用文件的方式);l两个参数都是字符串 “”fp=fopen("a.txt","r");//打开“a.txt”文件,打开方式为 只读二、文件的关闭:fclose(),只有文件打开成功才需要关闭文件打开必须要关闭,关闭文件时会触发系统把
2021-10-07 20:33:03
739
原创 C语言位运算应用
用一个无符号的整形的每一位代表一个任务,1代表任务完成,0代表任务未做;#include<stdio.h>#define BIT(x) (1<<(x)) //带参数的宏定义,编译与处理后, //代码里BIT(0)===(1<<(0))1左移0位 //BIT(1)===(1<<(1))1左移1位 //BIT(2)...
2021-10-06 15:31:13
158
原创 指针相关操作
一:函数指针调用函数一个函数,在编译的时候,系统会给函数分配一个入口地址,这个入口地址称为函数的指针(地址)既然有地址,我们可以声明一个指针变量指向该函数,就可以通过指针变量调用函数了 int c,d; c = max(15, 9); int(*p)(int, int);//定义一个函数指针变量 p = max;//将函数max入口地址给指针变量p,函数名代表函数入口地址。&max与max地址是等价的 d = p(15, 9);//调用*p就是...
2021-10-04 13:39:16
186
原创 C语言 使用指针数组给main函数传递参数
演示程序:int main(int argc, //argv数组元素个数 char *argv[] //指针数组,argv[0]保存的是当前可执行文件的完整路径 ){ int i; printf("argc=%d\n", argc); for (i = 0; i < argc; i++) { printf("argv[%d]=%s\n",i,argv[i]);//打印出argv内容 }}...
2021-10-03 16:51:08
541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人