C++
浚jskp
这个作者很懒,什么都没留下…
展开
-
this指针
this是指向实例化对象本身时候的一个指针,里面存储的是对象本身的地址,通过该地址可以访问内部的成员函数和成员变量。为什么需要this?因为this作用域是在类的内部,自己声明一个类的时候,还不知道实例化对象的名字,所以用this来使用对象变量的自身。在非静态成员函数中,编译器在编译的时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。例如a.fun...原创 2019-10-29 21:00:22 · 168 阅读 · 0 评论 -
虚析构函数
1:总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的.2:用来做基类的类的析构函数一般都是虚函数(1)如果父类的析构函数不加virtual关键字当父类的析构函数不声明成虚析构函数的时候,当子类继承父类,父类的指针指向子类时,delet...原创 2019-10-26 22:02:37 · 144 阅读 · 0 评论 -
纯虚函数
1:纯虚函数不指向任何函数,因此无法通过纯虚函数进行函数调用。4:当一个类中有纯虚函数时我们称这个类为抽象类,抽象类不能直接定义为对象要通过继承的方式来同过子类定义对象,但是抽象类可以定义指针。:5:对于抽象类来说,它无法实例化对象,而对于抽象类的子类来说,只有把抽象类中的纯虚函数全部实现之后,那么这个子类才可以实例化对象。#include<iostream>usin...原创 2019-10-26 21:47:38 · 216 阅读 · 0 评论 -
运算符重载
运算符重载之后运算符的含义不变,不能把+符号,写成-运算。运算符重载之后的优先级和结合性不变。类关系运算符“ .” 指针运算符“ * ” 作用域运算符“ ::”三目运算符“?” 不能重载。运算符重载有两种方式1:非静态成员函数。2:非成员函数(友元运算符)。3:输入输出运算符只能用非成员函数(友元运算符)1:非静态成员函数。#include&...原创 2019-10-25 21:47:55 · 124 阅读 · 0 评论 -
虚函数
1:虚函数是非静态成员函数2:具有继承性,基类中有虚函数,派生类无论是否声明,同原型函数自动为虚函数。3:调用时,通过指针决定调用哪个类的函数。4:带有纯虚函数的是抽象类。(virtue void f()=0;)5:virtual 限制: . virtual不能修饰全局函数,必须是某个类的函数成员 . virtual 不能修饰静态成员函数 . virt...原创 2019-10-23 21:44:23 · 164 阅读 · 0 评论 -
函数模板
处理不同类型数据#include<iostream>using namespace std;template<typename T>T fun(T x){ return x+x;}int main(){ float a=5.4; cout<<fun(a)<<endl; int b=2...原创 2019-10-20 23:32:33 · 81 阅读 · 0 评论 -
虚基类
#include<iostream>using namespace std;class Base0{public: Base0(int var):var0(var){} int var0; void fun0(){cout<<"base0"<<endl;}};class Base1:virtual public Base0...原创 2019-10-20 23:22:53 · 106 阅读 · 0 评论 -
对象的深复制
#include<iostream>#include<cassert>using namespace std;class point{public: point():x(0),y(0) { cout<<"no number"<<endl; } point(int x,int y):x(x),y(y...原创 2019-10-19 23:33:41 · 82 阅读 · 0 评论 -
浅复制
#include<iostream>#include<cassert>using namespace std;class point{public: point():x(0),y(0) { cout<<"no number"<<endl; } point(int x,int y):x(x),y(y...原创 2019-10-19 23:26:27 · 84 阅读 · 0 评论 -
动态对象数组
#include<iostream>#include<cassert>using namespace std;class point{public: point()//point():x(0),y(0); { cout<<"no number"<<endl; } point(int x,int y...原创 2019-10-19 22:59:59 · 300 阅读 · 0 评论 -
动态创建对象
#include<iostream>using namespace std;class point{public: point()//point():x(0),y(0); { cout<<"no number"<<endl; } point(int x,int y)//point(int x,int y):x(...原创 2019-10-19 22:24:17 · 102 阅读 · 0 评论 -
vector创建数组
数组是继承于C语言的一种表示群体数据的方法,具有简单,高效的优点,但无论是静态数组,还是用new动态创建的数组,都难以检测下表越界的错误,在实际应用常常造成困扰。用vector创建数组对象,它通过将动态数组封装成一个类,允许在调试状态下访问元素时检查下标越界的错误。Vector不是一个类,而是一个类模板。用vector定义动态数组的形式为:Vector<元素类型>数组对象...原创 2019-10-19 22:04:11 · 2242 阅读 · 0 评论 -
动态内存分配创建数组-
#include<iostream>#include<cstring>using namespace std;int main(){ //对象 int *tr=new int(3); cout<<tr[0]<<endl; cout<<*tr<<endl;//一维数组 int...原创 2019-10-19 21:44:06 · 485 阅读 · 0 评论 -
带默认参数值的函数
实参与形参的建立是按照从左到右的顺序建立对应关系的。int(int x,int y=5,int z=6) //正确int(int x=2,int y=5,int z) //错误int(int x=2,int y,int z=6)// 错误原创 2019-08-17 16:41:41 · 269 阅读 · 0 评论 -
内联函数
关键字inline,函数调用也会降低程序的执行效率,增加时空开销,因此对于一些简单的,规模小的又使用频繁的函数,可设计为内联函数,内联函数不是在调用时发生转移,而是在编译时将函数嵌入在每一个调用处,通常内联函数应该是比较简单的函数,结构简单,语句少。#include<iostream>using namespace std;const double PI=3.1415926;...原创 2019-08-17 16:35:15 · 69 阅读 · 0 评论 -
复制构造函数
#include<iostream>using namespace std;class Point{public: Point(int x,int y) { this->x=x; this->y=y; } Point(Point &p); int getx(){ return...原创 2019-08-18 16:28:03 · 199 阅读 · 1 评论 -
析构函数
析构函数是在对象的生存期即将结束时被自动调用的,它调用完成后,对象也就消失了,相应的内存空间也被释放了。#include<iostream>using namespace std;class Clock{public: Clock(int a,int b,int c) { this->a=a; this->b=b...原创 2019-08-18 16:54:25 · 273 阅读 · 0 评论 -
类的组合
#include<iostream>#include<cmath>using namespace std;class Point{ public: Point(int x,int y) { this->x=x; this->y=y; } Point (Point...原创 2019-08-18 18:31:59 · 146 阅读 · 0 评论 -
友元函数
#include<iostream>#include<cmath>using namespace std;class Point{ public: Point(int x=0,int y=0):x(x),y(y){} int getx(){return x;} int gety(){return y;} friend flo...原创 2019-08-19 15:15:18 · 78 阅读 · 0 评论 -
友元类
使用友元类时注意:(1) 友元关系不能被继承。(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明#include<i...原创 2019-08-19 15:52:14 · 233 阅读 · 0 评论 -
继承
#include<iostream>using namespace std;class Person{public: Person() { cout<<"Person construct is runing"<<endl; } ~Person() { cout<<"...原创 2019-08-19 16:10:00 · 85 阅读 · 0 评论 -
虚继承
#include<iostream>using namespace std;class Father{public: Father(int i) {this->i=i; cout<<i<<endl; }private: int i;};class Mother{public: ...原创 2019-08-19 16:10:46 · 74 阅读 · 0 评论 -
多态
#include<iostream>using namespace std;class Father{public: Father(int i) {this->i=i; cout<<i<<endl; }private: int i;};class Mother{public: Mo...原创 2019-08-19 16:14:37 · 103 阅读 · 0 评论 -
枚举
enum success{a,b,c,d,e,f,g};//#include<iostream>using namespace std;enum success{a,b=7,c,d,e,f,g};int main(){ success x1; enum success x2=b; cout<<success(a)<<end...原创 2019-08-17 15:34:53 · 144 阅读 · 0 评论 -
随机数
随机数每次随机种子默认为1,所以要每次输入改变随机种子。#include<iostream>#include<iomanip>#include<cstdlib>using namespace std;int main(){ unsigned sum; int face; cin>>sum; srand(...原创 2019-08-17 16:11:38 · 66 阅读 · 0 评论 -
函数重载
#include<iostream>using namespace std;int sum(int a,int b){ return a+b;}double sum(double a,double b){ return a+b;}int main(){ int a=1,b=2; double c=3.12,d=3.44; co...原创 2019-08-17 16:18:22 · 73 阅读 · 0 评论 -
构造函数
#include<iostream>using namespace std;class Clock{public: Clock(int h,int m,int s)//有参构造函数 { hour=h; minute=m; second=s; cout<<"construct"<<...原创 2019-08-18 16:01:47 · 65 阅读 · 0 评论