![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
领悟
fighting123678
这个作者很懒,什么都没留下…
展开
-
C++需要注意的地方
1、当一个函数返回引用时,实际返回了一个变量的内存地址 2、setw(只对其紧跟的起作用) 3、setw setfill(‘+’) 4、setprecision() 5、setprecision() setiosflags(ios::fixed)//小数点右边有几位小数; 6、setiosflags(ios::showpos)//强制显示符号; 7、setiosflags(ios::...原创 2018-07-02 19:48:40 · 185 阅读 · 0 评论 -
函数重载
1、rtype name(type p1,type p2) 其中,rtype为函数返回类型,neme是函数名,type是形式参数的类型,p1、p2是形参名。 2、相同点:函数名(一般情况下,功能也相同) 不同点:参数个数不同或者参数类型不同;(必须具有不同的参数表,仅有返回值类型不同是不对的) 例如:int h(int x);double h(double x);...原创 2018-03-10 10:29:43 · 171 阅读 · 0 评论 -
命名空间
1、命名空间就是每个程序员或每个不同的函数库独立地定义的一个名称,只要命名空间不同名,这样就可以有效地区分程序中的同名变量。 2、定义命名空间的关键字是namespace,语法如下:namespace name{ members;}其中name是命名空间的名字,members是命名空间的成员,可以是变量、函数声明、函数定义、结构声明、类的声明等。 3、名字空间的应用 ...原创 2018-03-11 20:50:00 · 164 阅读 · 0 评论 -
类和对象
#include <iostream>using std::cout;using std::cin;using std::endl;using namespace std;//有分号;class Point//这里类的名称首字母一般大写{private: int x_;//默认函数内部,private函数中定义的变量最好是有一个"_",书写方式要记住; ...原创 2018-03-15 17:33:36 · 169 阅读 · 0 评论 -
静态成员
#include <iostream>using namespace std;class Point{public: Point():_x(0),_y(0){++_id;} Point(double x):_x(x),_y(x){++_id;} Point(double x,double y):_x(x),_y(y){++_id;} double...原创 2018-03-20 16:43:59 · 239 阅读 · 0 评论 -
拷贝构造函数(一定要看清楚到底什么时候调用拷贝构造函数)
1、拷贝构造函数是用一个已存在的对象去初始化另一个需要新建的对象,即用已经存在的对象初始化新建对象。 2、拷贝构造函数的写法类名 (const 类名 &amp;要拷贝的类名) 例如: X是类的名称;X(const X &amp;p){a_=p.a_,b_=p.b_;//这里必须要有}2、使用拷贝构造函数的情形 (1)X (const X &amp;p){}int...原创 2018-03-20 18:26:47 · 1119 阅读 · 0 评论 -
对p1.setx(2.6).sety(7.5)进行解读
1、p1.setx(2.6).sety(7.5);这种类型是不是经常见呢? 这种到底是什么样的作用方式呢? 让我们以类来进行介绍吧#include &amp;lt;iostream&amp;gt;using namespace std;class Point{private: double x_,y_;public: Point():x_(0),y_(0){} Poi...原创 2018-03-20 19:33:00 · 625 阅读 · 0 评论 -
函数声明
函数声明有两种类型 类型一#include <iostream>#include <string>using namespace std;int sum(int x=0,int y=0)//这一块既是定义也是声明;{ return x+y;}int main(){ cout <<sum(1,2)<<endl;...原创 2018-03-10 10:14:12 · 262 阅读 · 0 评论 -
const使用方法
一、基本事项 1、const 常量类型 常量名=常量表达式;(固定不变) 例如:const double PI=3.14;//常量、常指针、常函数const char s[]="hello";//常数组2、常量是在程序执行过程中其值固定不变的内存单元的名字。在c++中常用const定义常量。 注意事项: (1)必须在定义时初始化 例如:#include <io...原创 2018-03-08 17:30:19 · 8485 阅读 · 1 评论 -
C++中的string getline(cin,s); cin>>s;
1:string对象的定义和初始化以及读写string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3(&amp;amp;quot;valuee&amp;amp;quot;); 将s3初始化一个字符串面值副本string s4(n,'c'); 将s4 初始化为字符'c'的n个副本cin&amp;amp;amp;gt;&am转载 2018-05-27 19:51:05 · 1187 阅读 · 0 评论 -
区分好继承类、多态类和封闭类
一、继承类 在继承中,子类负责其直接基类的构造,至于如何构造需要看下面; 如何在子类中调用拷贝构造函数,看下面;#include &amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;gt;using namespace std;clas原创 2018-05-26 09:27:26 · 584 阅读 · 0 评论 -
char* int* void* string char等(有string和char[]的对比,很重要)
1、char* 特别之处是,比如char* name,cout&amp;amp;amp;amp;lt;&amp;amp;amp;amp;lt;name,输出的是内容,但是,其他类型比如int* ,int* name,cout&amp;amp;amp;amp;lt;&amp;amp;amp;amp;lt;name输出的是地址,要想输出char*类型的地址,就必须强制转化成其他类型的地址,比如void*等 2、在类中给char* int* vo原创 2018-05-20 16:56:13 · 1208 阅读 · 0 评论 -
多态、虚函数、虚析构函数、纯虚函数和抽象类
一、多态(只对指针和引用有用) 1、定义:多态是指当基类的指针(或引用)绑定到派生类对象上,通过此指针(或引用)调用基类的成员函数时,实际上调用到的是该函数在派生类中的覆盖函数版本。 2、多态的两种表现形式(其实如果一个基类中的一个函数为虚函数的话,若其派生类中有同名的函数,但是没有标明为虚函数的话,默认为虚函数,至于调用哪一个还是看到底指向哪里) (一)表现形式一 通过基类指针调用基类和...原创 2018-05-05 11:28:13 · 214 阅读 · 0 评论 -
容器
定义容器的时候一定要记住是在using namespace std后面定义,不可在其前面定义新的容器。在顺序容器中用erase的话,如果想要把某一个数全部消除,则与迭代器搭配使用,如果只消除一个的话就直接用erase就好但是在关联容器中,如果用erase的话就是把所有的这一类的数全消除了一、容器分类 (1)顺序容器 vector(动态的一维数组)、deque(双端对列)、lis...原创 2018-04-18 22:02:50 · 362 阅读 · 0 评论 -
引用的使用方法
左值引用 1、格式:类型 &amp;amp;引用名=变量名; 2、例如:int i=9;int &amp;amp;ir=i;//ir为i的别名,ir和i的值始终保持相同;ir=20;//i=20;i=10;//ir=10;//其中ir和i为一体的,两个值始终相同。3、注意必须在定义时初始化,不能在定义完成后再给它赋值 例:int &amp;amp;i;//错误,因为没有在定义时初始化;...原创 2018-03-08 10:45:01 · 1572 阅读 · 0 评论 -
c++中某些格式控制符
一、setw 1、头文件:#include iomanip 2、作用:用于设置输出数据所用的列数,默认右对齐,只对紧跟其后的一个输出数据有效。 3、用法:cout&lt;&lt;setw(8)&lt;&lt;x&lt;&lt;endl;//所占的列数为8;二、setfill 1、头文件:#include iomanip 2、setfill(char a);//括号中的为字符...原创 2018-03-08 16:35:54 · 2683 阅读 · 0 评论 -
new与delete
c++中的new()与delete()和C语言中molloc()与free()相对应。 1、new (1)用法 法1: int *p; p=new type;//其中type是类型,只分配堆内存。法2: int *p; p=new type(x);//其中将分配到堆内存初始化为x;法3: int *p; p=new t...原创 2018-03-08 17:04:58 · 336 阅读 · 0 评论 -
封闭类对象
1、定义:也就是在一个类中包含其他类的成员函数 2、封闭类对象和析构函数的执行顺序 (1)封闭类对象生成时,先执行所有对象的构造函数,然后才执行封闭类的构造函数。 (2)对象成员的构造函数调用次序和对象成员在类中的说明次序一致,与他们在成员初始化列表中出现的次序无关。 (3)当封闭类对象消亡时,先执行封闭类的析构函数,然后再执行成员对象的析构函数。次序和构造函数调用次序相反。(因为在封闭类...原创 2018-03-22 17:39:32 · 1176 阅读 · 0 评论 -
友元
1、定义:友元位置是在一个类public中的函数,定义的时候不能用类型 类名::函数名,因为不是成员函数,只是朋友的关系,但是友元却可以直接调用私有成员。(友元一般声明为公有) 2、形式:class X{ friend 类型T 函数名称f(参数);};T f(参数){}3、通常友元的参数是类类型的,因为这样才能更好地体现友元的意义。 4、友元一般类内声明,类外定...原创 2018-03-22 17:59:51 · 145 阅读 · 0 评论 -
重载输入输出运算符
1、因为自定义的类无法用cin>>X输入,无法用cout<<X输出,所以要运用重载输入输出运算符的方式进行对类的输入与输出。 2、他们一般被声明为友元函数,声明在类内,定义在类外。 3、重载输入用istream,重载输出用ostream。 4、样式:class X{private: int _x,int _y;public: friend...原创 2018-03-22 19:20:42 · 678 阅读 · 0 评论 -
各种重载运算符重载
一、基本定义 1、C++预定义的运算符只能用于基本数据类型的运算:整型、实型、字符型、逻辑型,但是不能作用于对象之间。 2、运算符重载的目的是扩展C++中提供的运算符的适用范围,使之能作用于对象。 3、运算符重载的实质是函数重载,可以重载为普通成员函数,也可以重载为成员函数。 4、根据实参的类型决定调用哪个运算符函数。 二、运算符重载的基本形式 不管什么样的,返回值是什么(除掉返回值...原创 2018-04-05 23:31:07 · 1479 阅读 · 0 评论 -
进行个数统计
统计一:按格式输出程序运行至当前存在过的Point对象总数。 (1)这种情况下一般要设置一个静态变量来进行统计,同时在每一个构造函数中对这个变量进行加一。 (2)构造函数包括拷贝构造函数、构造函数 例如:#include &amp;lt;iostream&amp;gt;using namespace std;class Point{private: double _x,_y; ...原创 2018-04-06 11:07:58 · 229 阅读 · 0 评论 -
this指针
1、使用的形式类 &(参数可是是类,也可以是普通类型){ return * this;}原创 2018-04-06 11:08:46 · 94 阅读 · 0 评论 -
STL(未完成)
标准模板库就是一些常用数据结构和算法的模板的集合。但是有了STL,不必再写大多数的标准数据结构和算法,并且可以获得非常高的性能。 一、STL中的基本概念 1、容器:实际上是数据结构,可容纳各种数据类型的通用数据结构,是类模板。 2、迭代器:本质上是指针,可以用于依次存取容器中元素,类似于指针。 3、算法:实际上是一个个的函数模板,用来操作容器中的元素的函数模板。 例1: - sort...原创 2018-04-09 21:41:13 · 107 阅读 · 0 评论 -
重载=号的时候,copy这一步使用深拷贝非常重要
#include <iostream>#include <cstring>using namespace std;class SString{private: char* s_; size_t len_;//size_t等价于unsigned int也就是>=0的意思;s_=newchar(2*len_); size_t siz_;...原创 2018-04-17 19:24:18 · 226 阅读 · 0 评论 -
Array数组和使用模板重载[]
#include <iostream>#include <string>#include <iomanip>using namespace std;template <typename T>class Array{private: T* e1_; size_t len_; size_t siz_;public:...原创 2018-04-17 19:32:07 · 286 阅读 · 0 评论 -
继承和派生
继承 1、单继承和多继承 只能从一个基类派生的继承称为单继承,可以从多个基类派生的继承称为多继承。在单继承方式下,派生类只有一个基类;而在多继承方式下,派生类可以有多个继承。C++中既支持单继承,也支持多继承。 2、Protected 基类的protected成员虽然不能被派生类的外部函数访问,却能被其派生类直接访问。Protected成员可以在(1)基类的成员函数(2)基类的友元函数(3...原创 2018-04-19 20:15:38 · 371 阅读 · 0 评论 -
类模板
1、类模板的定义template&lt;typename 类型参数1,typename 类型参数2.....)class 类模板名{ 成员函数变量};2、类模板里成员函数的写法template&lt;typename 类型参数1,typename 类型参数2.....)//成员参数里也要带类型参数表;返回值类型 类模板名&lt;类型参数名列表&gt;::成员函数...原创 2018-04-21 20:14:56 · 161 阅读 · 0 评论 -
类型转换运算符的重载
1、任何类型的名字本身就是一个类型转换运算符; 2、形式:operator double();不能多写,同时也不能少写; 3、例如:#include <iostream>using namespace std;class Complex{ double real,imag;public: Complex (double r=0,double i=0...原创 2018-04-05 16:45:56 · 230 阅读 · 0 评论 -
可变长数组类的实现
#include <iostream>using namespace std;class CArray{ int size;//数组元素的个数; int *ptr;//指向动态分配的数组;public: CArray(int s=0); CArray(CArray &a); ~CArray(); void push_ba...原创 2018-04-05 16:21:21 · 453 阅读 · 0 评论 -
各种构造合集
#include <iostream>using namespace std;class X{private: int _a,_b;public: X():_a(0),_b(0){}//默认构造函数; X(int a):_a(a),_b(a){}//构造函数; X(int a,int b):_a(a),_b(b){}//构造函数; X(...原创 2018-03-22 19:38:15 · 483 阅读 · 0 评论 -
构造函数与指针
1、如果遇到指针问题的话必须显示定义默认构造函数、析构函数、赋值运算符函数、拷贝构造函数。 2、以数组形式出现:#include <iostream>#include <cstring>using namespace std;class Point{private: int age; char name[20];//name[20]为指针...原创 2018-03-22 20:11:48 · 2729 阅读 · 0 评论 -
常量对象、常量成员函数
const int getData()是指这个函数的返回值是个常量,只能使用他(这个返回值)不能改变它。 int getData()const 是指这是个常量函数只能被常量对象(即常量函数等)访问。 1、常量成员函数 (1)在函数声明后面可以加const关键字 形式如下int getx() const; (2)在成员函数后面加const关键字,那么该成员函数可以成为常量成员函数。 (3...原创 2018-03-26 21:05:09 · 1645 阅读 · 0 评论 -
2018年3月27日课堂笔记
1、#include <iostream>using namespace std;#define DEBUGclass Date{private: int y_,m_,d_;public: Date():y_(0),m_(0),d_(0){} Date(int y,int m,int d):y_(y),m_(m),d_(d) { ...原创 2018-03-27 16:19:54 · 180 阅读 · 0 评论 -
前自增运算符重载、前自减运算符重载以及后自增运算符、后自增运算符重载
1、前自增和前自减运算符被看做单目运算符,后自增和后自减运算符被看做为双目运算符。 2、前自增和前自减运算符返回值是引用,所以返回值要返回&类型,这个是前置++(++a)一定要维持的属性。后置++(a++)返回的是一个临时变量,不能返回&类型。 3、前自增运算符重载、前自减运算符重载形式重载为成员函数:class X{ X& operator++()...原创 2018-03-27 16:51:02 · 1649 阅读 · 1 评论 -
常见错误点总结
1、// int _h,int _m,int _s;//错误,因为之间应该用分号; int _h,_m,_s;2、 Time(const Time&amp; p):_h(p._h)赋值的时候是P.,千万别忘记这个点。 3、int swap(int &amp;a,int &amp;b)//a和b前面的int前往别忘;4、在使用容器的时候,千万别忘记清除;...原创 2018-04-01 21:24:19 · 228 阅读 · 0 评论 -
浅拷贝和深拷贝
1、普通函数String s1,s2;s1="this";s2="that";s1=s2;(1)这里如果delete s1的话,那么s1所指向的存储空间会被消除,但是s2和s1所指向同样的存储空间,所以会导致指针悬挂。 (2)其次在s1结束后,会再一次执行析构,因为一个地方只能析构一次,所以这样会导致程序崩溃。 2、运算符重载MyString s;s="hello...原创 2018-04-04 21:58:40 · 104 阅读 · 0 评论 -
运算符重载为友元函数
一般情况下,将运算符重载为类的成员函数,是较好的选择。但是有时候,重载为成员函数不能满足使用要求,重载为普通函数,又不能反问私有类成员,所以将运算符重载为友元。 1、声明普通函数的友元。 例如:#include <iostream>using namespace std;class Complex {private: double real,imag;pub...原创 2018-04-05 15:29:25 · 1482 阅读 · 0 评论 -
各种函数头文件集合
1、sqrt (1)头文件 #include &lt;cmath&gt; (2)作用:取根号 2、strlen (1)头文件#include &lt;cstring&gt; (2)作用:计数字符串的长度 2、strcpy (1)头文件 #include &lt;cstring&gt; (2)作用:拷贝 3、string (1)头文件 #include &lt;cstrin原创 2018-03-22 18:02:48 · 2811 阅读 · 0 评论