C++
仪宝
这个作者很懒,什么都没留下…
展开
-
double计算时,精度问题
doubel计算时,丢失精度问题原创 2022-09-20 11:11:34 · 1417 阅读 · 0 评论 -
错误代码-MSB6006: “cmd.exe”已退出,代码为 1
头文件生成错误恢复头文件重新生成成功原创 2022-03-28 14:44:46 · 1831 阅读 · 1 评论 -
C++ 调用父类的函数
子类调用父类函数__super::函数名(参数);双下划线原创 2022-02-28 10:52:51 · 982 阅读 · 1 评论 -
C++ 枚举类型enum
枚举:在一定的范围内取值,从确定值开始连续取值加一,若无确定值则从零开始并且这个取值必须是枚举中的任意一个且只有一个枚举1,枚举2相当于宏 只能简单地替换 01,不属于字符串定义枚举:enum 枚举类型{枚举1=整型常量值1,枚举2=整型常量值2};PS:分号不能掉enum sex{w,m};定义枚举变量:sex s=w;sex s1=a;//报错:必须取值为枚举中的成员(w/m),不能为其他第三方,也不能赋整型值。PS:枚举成员值从确定值开始连续取整型值,若第一个枚举成员值不给原创 2021-01-16 16:42:35 · 201 阅读 · 0 评论 -
C++ 联合体union
联合体所有成员共享一个最大的类型空间只能使用其中一个成员与结构体的区别:结构体是给每一个成员分配空间,联合体只分配一个最大的成员空间定义联合体:只是定义一种新的类型union 类型名 { 类型 成员1; ... };定义联合体变量:类型 变量名union 类型名 变量名={只有一个值};引用成员:(指针,变量名)变量名.成员指针->成员#include<iostream>using namespace std;struct people{ ch原创 2021-01-16 16:34:24 · 248 阅读 · 0 评论 -
C++ 多态 虚函数
1、对象之间赋值没有关系(不是继承关系)类型对象是不能直接赋值:student lz;string a=“abc”;lz=a;//报错:运算只能识别基本类型,不能识别复杂类型具有关系:基类对象=子对象 可以赋值子对象=基类对象 不可以直接赋值2、对象拷贝复制:调用拷贝构造器(实例化对象同时赋值同类对象)student zzz=lz;//zzz调用是拷贝构造器3、对象的赋值:(若类中没有显示的定义重载赋值运算符,就会系统默认定义赋值运算符)studetn abc;lz=abc原创 2021-01-15 15:50:05 · 83 阅读 · 0 评论 -
C++ 继承和派生 多继承
继承与派生:基类(或父类):被继承的所有的类(人类)派生类(或子类):从基类中继承新增部分特性的类class 子类:继承方式 基类1,继承方式 基类2...{ };继承目的:实现设计与代码的重用,充分利用原有的类继承方式:1、公有继承,2私有继承,3保护继承简要版Public继承 公有->公有 私有->不可访问 保护->保护!基类中的私有成员虽然不能直接在子类中访问,但是可以通过非私有接口访问protected 继承 公有->保护原创 2021-01-14 11:59:09 · 255 阅读 · 1 评论 -
c++ 运算符重载operator
不可重载的五个运算符. :: * ?: sizeof1 . (点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的2 :: (域运算符)即类名+域运算符,取成员,不可以重载3 .* (点星运算符,)不可以重载,成员指针运算符".*,即成员是指针类型4 ?: (条件运算符)不可以重载5 sizeof 不可以重载运算符重载本质就是重载方法,因为运算符不能直接识别复杂类型,当运算符操作复杂类型时会调用operator运算符方法PS:运算符可以直接操作基本类型,但原创 2021-01-12 17:19:30 · 483 阅读 · 0 评论 -
C++ 默认形参值
调用函数要求:函数名匹配,实参和形参类型个数一致定义方法返回类型 函数名(类型 形参名=值,类型 形参名=值…)在定义函数时,可以给部分形参设定默认值 ,默认形参列表从右往左不能出现未给定默形参值默认形参的类型写在形参列表的右侧错误eg:void show(const char name[],const char addrp[]=“hubei”,char sex)错误eg:void show(const char name[]=“aa”,const char addrp[]=“hub原创 2021-01-12 16:47:06 · 831 阅读 · 0 评论 -
C++ 查看虚函数表的两种方法
利用函数指针类型进行强转利用二维指针和二维数组查看,使用方便,简单#include<iostream>using namespace std;typedef void(*pfun)(void);//pfun重命名函数指针类型class A{public: void show() { cout&...原创 2020-02-20 10:42:19 · 1053 阅读 · 0 评论 -
C++ 纯虚函数
抽象类:含有纯虚函数的类抽象类不可调用可以用于统一接口的名字#include<iostream>using namespace std;class base{public: virtual void call()=0;};class cat:public base{public: void call() ...原创 2020-02-20 10:57:28 · 123 阅读 · 0 评论 -
C++ new malloc
相同new malloc 都是申请堆区空间不同malloc/free 是c/c++库函数,需要头文件<stdlib.h>,面向内存new/delete 是c++的关键字,需要编译器支持,面向对象语法newchar* s=new int;mallocchar* s=(char*)malloc(10);//(char*是强转)new用法//一维数组int* p=new int[4];delete p;//二维数组int(*p)[4]=new int [3][4]原创 2021-01-08 11:38:57 · 127 阅读 · 0 评论 -
C++泛型 函数模板 template<typename T>
泛型:1、函数模板:函数体一致, 只是数据不确定int add(int a,int b) { return a+b; } //重载函数 double add(double a,double b) { return a+b; }//函数模板template<typename T>T add(T a,T b){ return a+b;}int main(){ //由实参来决定T类型 c原创 2021-01-12 16:25:43 · 1264 阅读 · 0 评论 -
C++构造器
构造器:(每个对象的母亲)每个对象都由构造器来生成对象1、默认无参构造器:若一旦用户定义了(有参无参)构造器,无参构造器就不会默认定义方法名: 类名();2、有参构造器:方法名: 类名(…)3、拷贝构造器:若用户不显示定义拷贝构造器,编译器会默认添加默认拷贝构造器类名 对象1=对象; //必须在实例化时或者:类名 对象1(对象);方法名: 类名(类名& p){*this=p}4、析构器:当对象被释放时,在释放之前向该对象发送该方法~类名原创 2021-01-12 16:18:41 · 705 阅读 · 0 评论 -
C++ const常,常变量,常指针变量,指针常变量,作类成员,常方法,常对象
Const常量不可改变,在定义时初始化Const作成员Const变量作成员变量必须初始化Const成员变量也属于对象成员Const成员变量必须显示的由构造器初始化class 类名 { public:类名():常量名(10) //初始化列表来初始化常变量}Const方法 只读不可修改可以修改(指针)指向内容。不可修改指针内容返回值 函数名(形参) constConst对象Const 类名 对象;该对象中的属性都不能通过该常对象修改,也不能访问普通方法,只访问常方原创 2021-01-12 15:53:57 · 194 阅读 · 0 评论 -
C++ 类内静态成员
在程序运行时分配,非静态成员在实例化时分配作用域在类内,通过发消息来引用在类外初始化,不能通过初始化列表来初始化int ::num=0;所有成员共享静态成员空间(只分配一次)非静态方法只属于对象静态成员方法属于对象和类,只能访问静态成员类内类外引用(不能破坏封装性)1、对象引用:对象.静态成员变量2、类引用:类::静态变量#include<iostream>#include<string>using namespace std;class people原创 2021-01-12 14:00:04 · 92 阅读 · 0 评论 -
C++ 类作成员
Class A{A():b()//初始化列表B b;}1调用b类对象成员的构造器是由A的初始化列表来决定若类A的初始化列表没有指定类b的构造器时,默认使用类b无参构造器2调用顺序先调用类成员b构造器后调用a构造器,先调用a析构器后析构类成员b代码块#include<iostream>#include<string.h>using namespace std;//声明类class score;ostream& operator<<原创 2021-01-12 10:22:42 · 194 阅读 · 0 评论 -
C++ 指针 引用 取别名
取别名和引用区别C语言中取别名是给类型取名语法typedef 类型名 别名;typedef int i;c++中的引用是给变量取别名类型名& 别名=变量名;int& newname =a;引用和指针的区别1引用是某块地址的别名,不分配新的空间指针是存储所指内存的地址,大小四个字节2“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;3引用不可为空,在定义时赋初值后不可改变指针可以为空,可以改变所存储的原创 2021-01-08 09:03:05 · 863 阅读 · 0 评论 -
C++虚基类图解
经典菱形继承student是people子类,teacher是people子类,doctor同时继承student和teacher一般情况下,student和teacher中分别包含people的空间 ,doctor会直接继承两边people的空间,形成空间冗余C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员。即在继承的同时加vi...原创 2020-01-02 17:14:24 · 739 阅读 · 0 评论