![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
普通网友
这个作者很懒,什么都没留下…
展开
-
vector容器
#include<iostream>using namespace std;#include<vector>void test01(){ vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); //第一种遍历 vector<int>::iterator itBegin=v.begin().原创 2021-09-02 22:04:34 · 101 阅读 · 0 评论 -
C++——二进制文件的写入读取
二进制的文件肉眼我们是读不懂的,如果通过二进制的读写操作就可以读懂。写操作:#include<iostream>#include<fstream>using namespace std;class Person{public: char m_Name[64]; int m_Age;};void test(){ ofstream ofs; ofs.open("Person.txt", ios::out | ios::binary); if (!o原创 2021-08-26 15:55:49 · 1436 阅读 · 5 评论 -
C++——文件操作
一、写文件比如:#include<iostream>#include<fstream>using namespace std;//写文件void test1(){ //创建一个对象 ofstream ofs; ofs.open("text.txt", ios::out); ofs << "张三"<< endl; ofs << "男" << endl; ofs << "18" &l..原创 2021-08-25 22:15:35 · 259 阅读 · 2 评论 -
C++——电脑运作案例
#include<iostream>using namespace std;//抽象不同的类//CPUclass CPU{public: //抽象计算函数 virtual void calculate() = 0;};//内存条class Memory{public: //抽象内存函数 virtual void storage() = 0;};//显卡class Display{public: //抽象显示函数 virtual void d.原创 2021-08-25 20:06:08 · 194 阅读 · 0 评论 -
C++多态计算器、纯虚函数
#include<iostream>using namespace std;class Calc{public: virtual int Calclute() { return 0; } int m_Num1; int m_Num2;};//运算过程class AddCalc : public Calc{public: int Calclute() { return m_Num1 + m_Num2; }};class JianCalc : pu.原创 2021-08-24 16:51:35 · 125 阅读 · 0 评论 -
C++菱形继承
B和C从A中继承,而D多重继承于B,C。那就意味着D中会有A中的两个拷贝。因为成员函数不体现在类的内存大小上,所以实际上可以看到的情况是D的内存分布中含有2组A的成员变量。#include<iostream>using namespace std;class Animal{public: int m_Age;};class Sheep :public Animal{};class Tuo :public Animal{};class Sheep...原创 2021-08-08 11:05:50 · 131 阅读 · 0 评论 -
多继承语法
#include<iostream>using namespace std;class Base1{public: int m_A = 10;//4字节};class Base2{public: int m_A = 20;//4字节};class Son :public Base1, public Base2{public: int m_C = 30;//4字节};void test(){ Son son; //当我们父类中出现同名成员后,要加作用域,一.原创 2021-08-06 21:00:34 · 61 阅读 · 0 评论 -
继承同名函数处理、 继承同名静态成员处理方式
问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?访问子类同名成员 直接访问即可 访问父类同名成员 需要加作用域 当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域 #include<iostream>#include<string>using namespace std;//继承同名成员处理方式class Base{public:原创 2021-08-06 16:49:48 · 405 阅读 · 0 评论 -
函数调用运算符重载
#include<iostream>#include<string>//函数调用运算符重载using namespace std;class Myprint{public: void operator() (string test) { cout << test << endl; }};class MyAdd{public: int operator()(int num1, int num2) { return num1.原创 2021-08-06 14:47:30 · 96 阅读 · 0 评论 -
C++友元函数
在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为friend友元的三种实现全局函数做友元 类做友元 成员函数做友元一、全局函数做友元#include<iostream>#include<string.h>using namespace std;//房屋的类class Building{public: string m_Sitting..原创 2021-08-03 09:17:33 · 94 阅读 · 0 评论 -
初始化列表、类对象作为类成员
初始化列表#include<iostream>//初始化列表using namespace std;class Person{public: Person(int a,int b,int c):m_A(a),m_B(b),m_C(c) { } int m_A; int m_B; int m_C;};void test01(){ Person p(30,20,10); cout << p.m_A << endl; cout &l.原创 2021-07-20 21:41:30 · 221 阅读 · 1 评论 -
深拷贝、浅拷贝
浅拷贝:简单的赋值操作深拷贝:在堆里重新申请空间,进行拷贝操作浅拷贝:#include<iostream>using namespace std;class Person{public: int m_age; Person() { cout << "默认构造函数" << endl; } Person(int age) { m_age = age; cout << "有参构造函数" << endl;原创 2021-07-20 20:09:18 · 82 阅读 · 1 评论 -
构造函数调用规则
默认情况下,c++编译器至少给一个类添加3个函数1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)3.默认拷贝构造函数,对属性进行值拷贝 构造函数调用规 则如下:如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造如果用户定义拷贝构造函数,c++不会再提供其他构造函数示例:#include<iostream>using namespace std;//创建一个类C++自动添加3个函数class Person{p..原创 2021-07-20 16:14:40 · 200 阅读 · 0 评论 -
封装C++文件(以“圆”这个项目为例子)
要求:通过C++创建一个圆类(半径和圆心)然后输入一个点的坐标,判断出这个点在圆内、圆上、还是圆外。#include<iostream>#include<string.h>#include "Circle.h"#include "Point.h"using namespace std;//点类class Point{public: void setX(int x) { m_x = x; } int getX() { return m_x;原创 2021-07-18 22:14:05 · 263 阅读 · 5 评论 -
C++成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限#include<iostream>#include<string.h>using namespace std;class Person{public: void setname(string name) { m_name = name; } string getname() { return m_name; } int getage() { int age = 20; retu原创 2021-07-18 16:43:23 · 1642 阅读 · 0 评论 -
C++类和对象
C++面向对象的三大特征:封装、继承、多态。C++认为万事万物都皆为对象,对象上有属性和行为。一、封装封装是C++面向对象三大特性之一封装的意义: 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制封装意义一: 在设计类的时候,属性和行为写在一起,表现事物语法: class 类名{ 访问权限: 属性 / 行为 };...原创 2021-07-16 21:39:27 · 62 阅读 · 0 评论 -
函数重载特性及注意事项
一、函数重载函数重载满足条件:同一个作用域下 函数名相同 函数参数类型不同或者个数不同,或者顺序不同#include<iostream>using namespace std;void func(int a){ cout << "func的调用11" << endl;}void func(char b){ cout << "func的调用22" << endl;}void func(double b){.原创 2021-07-15 21:38:16 · 789 阅读 · 0 评论 -
函数默认参数、函数的占位参数
一、函数的默认参数1.在C++中函数的形参是可以有默认值的首先在我们正常使用C++的时候如下面代码:都是世代传承是#include<iostream>using namespace std;//函数的默认参数int func(int a, int b, int c){ return a + b + c;}int main(){ cout << func(10,20, 30) << endl; system("pause"); retur原创 2021-07-15 19:08:19 · 506 阅读 · 4 评论 -
QT实现两界面类似QQ聊天
题目要求:在基于QT的界面基础上,两个窗口通过套接字实现网络通信,所用协议包括TCP和UDP协议,为了模拟不同的计算机,请大家建立两个虚拟机,一个虚拟机运行一个类似QQ的界面,两个界面实现类似QQ聊天。1.什么是TCP和UDP协议,他么各有什么特点和优缺点?TCP(传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP(用户数据报协议)原创 2021-06-10 11:39:25 · 3579 阅读 · 13 评论 -
C++面向对象、类、对象、重载特性、析构函数、构造函数、继承、纯虚函数
1.什么是C++?C++是C语言的升级版,在C的基础上增加了很多功能,是一种高级语言。2.什么是面向对象,什么又是面向过程?举例:a+b直接计算a+b就是面向过程。面向对象就是给a+b穿上了一件衣服。而不是直接计算a+b。3.c++的类就是c++的灵魂 类大家可以把他看看做c语言结构体的升级版,类的成员不仅可以是变量,也可以是函数。4.如何定义一个类?class student{public: char name[64]; int age;};5.什么是对象?原创 2021-06-09 15:18:40 · 185 阅读 · 7 评论 -
引用值传递、引用做函数返回值、引用的本质
一、函数的值传递之前学过了两种,一种是值传递、另一种是传地址。在学了引用之后便又多了一种方式。1.值传递:main函数里面: int a = 10; int b = 20; swap1(a,b); cout << "a=" << a << endl; cout << "b=" << b << endl;//值传递,实参不会发生改变swap1(值传递):void swap1(int a, int b){ int t原创 2021-06-07 21:04:27 · 509 阅读 · 0 评论 -
C++内存分区模型
C++在执行时,将内存分为4个区域;代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区的意义:不同区域存放不同数据,赋予不同的生命周期,更加灵活。代码区和全局区在程序运行前就有了,而栈区和堆区在程序运行后才出现。代码区:用来存放CPU执行的机器指令(二进制代码的区域),自己写的所有代码都通过二进制的格式存放在代码区;特原创 2021-06-06 16:36:29 · 156 阅读 · 0 评论 -
const修饰指针
1.常量指针const int *p=&a;特点:指针的指向(地址)可以改,但是指针指向的值不可以改。*p=20;错误p=&b;正确2.指针常量int *const p=&a;特点:指针的指向不可以改,指针指向的值可以改。*p=20;正确p=&b;错误3.const 既修饰指针又修饰常量。const int *const p3=&a;特点:指针的指向和指针的值都不可以修改。巧记方法:1.const为常量,p为指针,然后我们看con原创 2021-05-30 16:19:12 · 77 阅读 · 0 评论 -
指针占用的内存、空指针、野指针
1.在32位操作系统下,指针占用4个字节空间大小,在64位操作系统下,指针占用8个字节大小 cout << sizeof(int*) << endl; cout << sizeof(char*) << endl; cout << sizeof(float*) << endl; cout << sizeof(double*) << endl;2.空指针是不可以访问的 int* a = NULL;原创 2021-05-30 15:01:34 · 1430 阅读 · 0 评论 -
二维数组
#include<iostream>using namespace std;int main(){ int i, j; int arr[2][3] = { {1,2,3}, {3,4,5} }; for (i = 0; i < 2; i++) { for (j = 0; j < 3;j++) { cout << arr[i][j] << endl; } } cout << "二维数组大小为:" <原创 2021-05-24 17:05:44 · 84 阅读 · 1 评论 -
运算及逻辑符号
#include<iostream>using namespace std;int main(){ int a1=10; int b1=3; cout << a1 / b1 << endl; system("pause"); return 0;}1.和c语言一样,会输出3,因为a1和b1都是定义的int型,所以输出会保留整型舍掉小数部分的,怎么才能输出小数的形式呢? 和c语言一样,强制转换:cout << (float)a1 / b原创 2021-05-23 20:23:27 · 389 阅读 · 1 评论 -
C++数据的输入
前面讲了数据的输出这次来讲数据的输入:1.整型关键字:cin类似于c语言的scanf int a; cout << "plesse input:" << endl; cin >> a;//scanf cout << "a=" << a << endl;2.浮点型 float b; cout << "plesse input:" << endl; cin >> b;//scanf原创 2021-05-23 16:25:36 · 733 阅读 · 0 评论 -
字符型、字符串型
2.4字符型变量作用:用于显示单个字符,比如char ch = 'a';注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号注意2:单引号内只能有一个字符,不可以是字符串,只能单个字符c++中字符型变量只占用1个字节;#include<iostream>using namespace std;int main(){ //1.字符型变量创建方式 char ch ='A'; cout << ch << endl; //2.字符变量所占内存大原创 2021-05-23 15:46:44 · 2844 阅读 · 0 评论 -
数据类型
1.整型我们定义不同类型的数据试试:#include<iostream>using namespace std;int main(){ //短整型 short a1 = 20; //整型 int a2 = 10; //长整型 long a3 = 20; //长长整型 long long a4 = 40; cout << "a1=" << a1 << endl; cout << "a2=" << a原创 2021-05-22 21:51:23 · 63 阅读 · 0 评论 -
C++常量、关键字、标识符命名规则
1.常量:1.1.#define的宏定义#define 常量名 常量值1.2.const 修饰的变量const 数据类型 常量名 常量值#include<iostream>using namespace std;//常量://1.#define的宏定义// #define 常量名 常量值//2.const 修饰的变量//const 数据类型 常量名 常量值#define Day 7int main(){// Day = 14;//Day是常量,不可修改原创 2021-05-22 20:05:55 · 786 阅读 · 0 评论 -
第一个C++程序
大家都知道我们不管在学习任何一种程序语言的时候,运行的第一个程序是什吗?当然是输出“hello world”了,今天我来用C++输出hello world。#include<iostream>using namespace std;int main(){ cout << "hello world" << endl;//输出hello world字符 system("pause"); return 0;}除了输出语句那一句的话,其他的均为标准格式(原创 2021-05-22 16:38:20 · 57 阅读 · 0 评论