![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
ajiaihuiaaa
这个作者很懒,什么都没留下…
展开
-
vscode 无法使用自己写的类
请看这个说明文档,写的很好,直接验证是ok的。原创 2024-05-20 15:12:11 · 77 阅读 · 0 评论 -
c++ struct数组
/ 创建一个包含3个Point结构体的数组。// 定义一个名为Point的结构体。c++ struct数组。原创 2024-05-07 10:51:25 · 97 阅读 · 0 评论 -
c++中的类一直取同一个对象
c++ getInstance原创 2022-09-26 14:20:32 · 415 阅读 · 0 评论 -
c++类先运行哪个变量的问题
c++类中的构造函数原创 2022-09-26 14:03:12 · 306 阅读 · 0 评论 -
crc16手算
CRC16 手算方法:具体见B站:https://www.bilibili.com/video/BV1V4411Z7VA?spm_id_from=333.337.search-card.all.click原创 2022-05-17 14:25:49 · 153 阅读 · 0 评论 -
c++自己遇到的比较重要的知识点
c++知识点数组初始化时,size一般都是需要写数字,如果想写变量,那么就需要使用new。 int a = 5; int b[a]; // 报错 表达式必须含有常量值 int *b = new int[a]; // 正确 int *c = &5; // 错误,因为5是没有指针的,取不了地址 int *c = &a; // 正确new出来的变量是放在堆区的,所以在运行结束或者不用了之前,需要删掉,不然会一直占着内存空间。正确的删除方式是先delete,然后指向NU原创 2021-09-15 15:31:57 · 53 阅读 · 0 评论 -
c++ 中vector的初始化
可以在定义一个vecor的时候就进行初始化void main(){ vector<int> b = { 1,2,3,4,5,6 }; // 运行成功}初始化一个vector<complex>void main(){ vector < complex < double >> a = { {1,2},{3,4},{5,6} }; // 运行成功 注意里面每个complex都要有大括号}初始化一个vector<vector&g原创 2021-08-06 13:22:56 · 516 阅读 · 0 评论 -
数组的传入与传出
数组的传入:1,传入指针;2,直接传入 变量名[5];3 直接传入 变量名[]而且上面的三种方式,其实都是传入的是实参,而不是形参,可以看到main函数中数组的数都变了。数组的传出:无法传出数组,只能传出数组的第一个数的指针。void changeArray(int* a,int size); //传入的是数组void main(){ int a[] = { 1,2,3,4,5 }; changeArray(a,5); cout << a[0]<<endl;原创 2021-08-03 16:25:24 · 733 阅读 · 0 评论 -
c++ 指针
int b; b = 8; int* a; a = &b;//取地址操作只能针对变量,不能直接对数字进行取地址 cout << *a << endl; int c[] = { 1,2 }; cout << *c << endl; // c数组,c这个变量代表的就是c[0]的指针 int* ptr = NULL; // 在定义指针时,一开始要赋值为NULL,也就是空指针 cout << &ptr <<.原创 2021-08-03 11:25:34 · 52 阅读 · 0 评论 -
多态的原理以及实现
具体详情,请见网址:https://www.bilibili.com/video/BV1et411b73Z?p=136多态的实现:目前学了2种实现方式#include <iostream>using namespace std;class AbstractCalculator{public: virtual int getResult() { return 0; } int m_A; int m_B;};class AddOperator : public Abs.原创 2021-07-06 14:16:02 · 56 阅读 · 0 评论 -
c++多态的基本使用
#include <iostream>using namespace std;class Person{public: virtual void speak() // 这里必须要加virtual,没有virtual就出错。 // 如果不写virtual,那么指针地址就是早绑定,也就是编译时就绑定了,写上,那就是运行时再绑定地址 // 这里叫做虚函数 { cout << "人类在说话" << endl; }};class Man : p原创 2021-07-05 14:12:28 · 68 阅读 · 0 评论 -
当本类中存在其他类成员时,先构造其他类,再构造本类
当本类中存在其他类成员时,先构造其他类,再构造本类原创 2021-07-02 15:32:58 · 60 阅读 · 0 评论 -
类中初始化变量的另一种方法
class Person{ int m_A; int m_B; Person(int a,int b,int c) { m_A = a; m_B = b; }}上面的构造函数等同于Person(int a,int b,int c):m_A(a),m_B(b) { }原创 2021-07-02 15:23:50 · 60 阅读 · 0 评论 -
深拷贝与浅拷贝
浅拷贝: 系统自定义的拷贝函数就是浅拷贝,也就是直接将值赋值给另一个变量,而且复制的指针都是一样的;深拷贝:深拷贝是为了解决一种情况,那就是在类中,我们可能需要新建个存在于堆上的数据(new 指针、static静态数据),然后我们再调用浅拷贝函数时,会调用一次析构函数,析构函数会释放掉堆上的数据,然后我们就无法再调用堆上的这个数据了,就会报错。具体代码如下:#include <iostream>using namespace std;class Person{public: int原创 2021-07-02 15:17:23 · 43 阅读 · 0 评论 -
构造函数调用、生成规则
c++中,每创建一个类,系统都会默认生成一个构造、析构、拷贝函数;如果类中自定义了有参构造函数,那么系统就不自己定义无参构造函数,但是仍然会定义拷贝函数;如果类中定义了拷贝函数,那么系统就不定义无参构造、析构函数了,就要我们自己写了;class Person{public: Person (const Person &p){ m_Age = p.m_Age; } int m_Age;}void main(){ Person p1; // 这里就出错了,因为类中只有拷贝函原创 2021-07-02 13:54:11 · 83 阅读 · 0 评论 -
拷贝函数、构造函数
Person (const Person &p) // 必须要加const,而且传入的必须是引用。加const就是说p是无法进行修改。{ // 将p身上的所有成员复制给本身 m_Age = p.m_Age;}实例化对象时,不要加括号,除非要传入参数。不然会出错的。因为编译器会认为这是在创建一个函数。Person p1(); // 返回的是Person类,函数名叫p1Person p1; // 这样才是对的Person (10) // 创建了一个匿名对象,这原创 2021-07-02 13:37:08 · 51 阅读 · 0 评论 -
c++ struct和class区别
struct默认的访问权限是publicclass默认的访问权限是privatestruct使用起来和class很像,struct也可以像class一样进行实例化。原创 2021-07-02 10:38:44 · 55 阅读 · 0 评论 -
类的访问权限
public:类内可以访问,类外不可以访问,子类可以访问protected:类内可以,类外不可以,子类可以private: 类内可以,类外不可以,子类不可以原创 2021-07-02 10:36:11 · 129 阅读 · 0 评论 -
子类和父类中有同名成员
子类和父类中有同名成员变量或者成员函数时,肯定访问的是子类的成员,如果想访问父类的成员呢,就要这么操作。子类.父类::成员名因为当出现同名时,编译器会隐藏父类所有的成员,包括重载的成员函数。...原创 2021-07-02 10:18:41 · 408 阅读 · 0 评论 -
父类和子类构造顺序
先构造父类,再构造子类,然后先析构子类,再析构父类。相当于是,父类总是存在的时间比子类长。子类只要存在,父类就存在。原创 2021-07-02 09:47:21 · 311 阅读 · 0 评论 -
子类继承其实是继承所有成员
子类继承了父类所有的非静态成员,子类的size也就变大#include <iostream>using namespace std;class Base{public: int m_A; static const int m_F = 10;protected: int m_B;private: int m_C;};class Son :public Base{public: int m_D;};void test(){ cout << si原创 2021-07-02 09:43:20 · 274 阅读 · 0 评论 -
c++各种继承方式
原创 2021-07-01 17:27:54 · 60 阅读 · 0 评论 -
c++匿名对象
c++中,可以不将类进行实体化,直接用类名+()的形式生成一个类,这个类执行这句话后,会再次被释放掉#include <iostream>using namespace std;class Person{public: int m_Age; string m_Name; Person(string name,int age) { m_Age = age; m_Name = name; }};void test(){ cout << Person原创 2021-07-01 17:14:11 · 469 阅读 · 0 评论 -
赋值符重载
这是错误的,具体修改就用到了赋值运算符重载#include <iostream>using namespace std;class Person{public: int* m_Age; // 这里用到了指针,这样开辟的成员变量就在堆中。 // 由于变量是在堆中,所以要程序员自己释放掉,new用delete; // malloc用free Person(int age) { m_Age = new int(age); } ~Person() {原创 2021-07-01 16:53:30 · 61 阅读 · 0 评论 -
static赋值的2种方法
#include <iostream>using namespace std;class Person{ public: static const int m=10;};int main(){ cout << Person::m << endl; return 0;}#include <iostream>using namespace std;class Person{public: static int m=原创 2021-06-30 17:09:20 · 972 阅读 · 0 评论 -
C++堆、栈及静态数据区等五大区分析
C++堆、栈及静态数据区等五大区分析原创 2021-06-30 16:10:18 · 41 阅读 · 0 评论 -
运算符递增
这里要注意的是前置递增和后置递增,而且着重要看返回的是引用,还是新建的类。这里还重载了左运算符,就是<<,这样就可以输出我们自定义的类了。#include <iostream>using namespace std;class MyInteger{ friend ostream& operator<< (ostream & cout, MyInteger & myint);public: MyInteger() { m_Nu原创 2021-06-30 10:34:46 · 70 阅读 · 0 评论 -
怎么给新员工安装git
详情请见https://www.cnblogs.com/wuaihua/p/13164527.html。原创 2021-06-18 13:33:09 · 43 阅读 · 0 评论 -
c++ 在android studio平台上无法导入txt文件
需要在java那边导入txt文件。原创 2021-06-15 16:42:58 · 108 阅读 · 1 评论 -
c++ 传递数组给函数
数组不需要传递指针,或者引用,直接传入数组,就相当于传递的是指针。具体见下面的代码void fun1(int arr[]){ arr[0] = arr[1] + arr[2];}int main(){ int a[] = { 1,2,3 }; fun1(a); printf("%d", a[0]);}...原创 2021-06-11 15:14:11 · 133 阅读 · 1 评论 -
c++中vector.size()报错
在visual studio中使用for (int i = 0; i < vector.size(); i++) 时报错,因为vector.size()是无符号整数型,i是int型,解决方法就是定义一个int size_t =vector.size().于是,代码就变成`int size_t = vector.size();for (int i = 0; i < size_t; i++) ...原创 2021-06-11 11:22:57 · 1598 阅读 · 0 评论