![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习笔记
学习掌握一些C++的高级知识
嘘……一只bug
逆风的方向更适合飞翔,我不怕千万人阻挡只怕自己投降
——五月天《倔强》
展开
-
用stringstream分割字符串遇到的一个奇怪的事情
#include<bits/stdc++.h>using namespace std;int main(){// freopen(".../.txt","w",stdout); ios::sync_with_stdio(false); string suffix[1000]; string s; getline(cin,s); sulen=0; stringstream ss(s); while(ss>>suffix[sulen++]) cout<<原创 2021-05-07 18:15:01 · 111 阅读 · 0 评论 -
指针形参
今天在写一道关于链表的题的时候,发现在调用函数时传入的指针实参在进入函数后,函数的形参是实参的一个副本,子函数执行完毕,形参就会消亡,并不会改变实参的值struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};void print(ListNode *head){ ListNode *p=head; while(p!=原创 2021-05-03 21:38:37 · 247 阅读 · 2 评论 -
cout配合流操作算子举例(达到和printf近似的功能)
包含流操作算子的头文件是"iomanip"#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>//流操纵算子#define pi acos(1.0)#define e exp(-1.0)using namespace std;typedef long long ll;typedef pair<原创 2020-06-15 17:45:44 · 282 阅读 · 0 评论 -
自增\自减运算符的重载
自增运算符++ ,自减运算符–有前置/后置之分,为了区分所重载的是前置运算符还是后置运算符,C++规定:前置运算符作为一元运算符重载//重载为成员函数时T & operator ++()T & operator --()//重载为全局函数时T & operator ++ (T&)T & operatot -- (T&)后置运算符作为二元运算符重载,多写一个没用的参数//重载为成员函数时T & operator ++(int n)原创 2020-06-12 01:35:55 · 346 阅读 · 0 评论 -
重载类型转换运算符
class Complex{ double real, imag; public: Complex(double r=0,double i=0):real(r),imag(i){} operator double (){//重载强制类型转换运算符函数的返回值是不用写的,默认是类型本身 return real; }};int main() { Complex c(1.2, 3.4); cout << (double)c &原创 2020-06-12 00:49:18 · 414 阅读 · 0 评论 -
流插入运算符和流提取运算符的重载
问题来源:cout<<5<<"this"<<endl;这条语句为什么能够成立呢平常敲代码的时候只知道要想使用cin,cout需要包含头文件,其实cin是istream类的一个对象,cout是ostream的一个对象,而<<和>>分别是在类中重载运算符先考虑:下面这条语句cout<<5;假设ostream类中的<<运算符重载成员函数是这样定义的void ostream::operator<<(in原创 2020-06-12 00:37:24 · 1041 阅读 · 0 评论 -
友元和运算符重载
友元分为友元函数和友元类两种1.友元函数。一个类的友元函数可以访问该类的私有成员2.友元类。若A是B的友元类,则A的成员函数可以访问B的私有成员运算符重载:就是对已有的运算符(c++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为目的:扩展C++中提供的运算符的适用范围,使之能作用于对象需求:例如,complex_a和complex_b是两者复数对象,求两个复数的和,我们希望直接写成,complex_a+complex_b;但是在数学上我们可以直接对两个复数进原创 2020-06-11 00:11:57 · 1509 阅读 · 0 评论 -
静态成员函数和静态成员变量学习笔记
静态成员:在说明前面加了static关键字的成员class CRectangle{ private: int w, h;//成员变量 static int nTotalArea; static int nTotalNum; public: int Area(); int perimeter(); void Init(int w_,int h_); static void Prin原创 2020-06-10 16:53:55 · 92 阅读 · 0 评论 -
析构函数学习笔记
析构函数:名字和类名相同,在前面加‘~’,没有参数和返回值,一个类最多只有一个析构函数。析构函数在对象消亡时自动被调用,可以定义析构函数在对象消亡前做善后工作,比如释放分配的空间等。如果定义时没有写析构函数,编译时自动生成缺省析构函数,缺省析构函数什么也不做,定义了析构函数,编译器将不会自动生成class String{ private: char *s; public: String(){ s = new char[10];原创 2020-06-09 19:16:30 · 892 阅读 · 0 评论 -
类和对象
从客观事物中抽象出类将长,宽变量,设置长,宽以及求面积、周长三个函数封装在一起,就能形成一个矩形类。长,宽变量成为改”矩形类“的成员变量,三个函数成为该”矩形类“的成员函数,成员变量和成员函数统称为类的成员class CRectangle{ public: int w, h;//成员变量 int Area(){//成员函数 return w * h; } int perimeter(){原创 2020-06-09 18:14:19 · 136 阅读 · 0 评论 -
引用和const关键字
引用的概念1.定义引用时一定要将其初始化成某个变量2初始化后,他就一直引用这个变量,不会在引用其他变量了,也就是说引用是至始至终的3.引用只能引用变量,不能引用常量和表达式double a=4,b=5;double &r1=a;double &r2=r1;r2=10;cout<<a<<endl;//10r1=b;//不是引用,是简单的赋值cout<<a<<endl;//5作用:1,交换两个数的值void swap(i原创 2020-06-08 22:42:12 · 360 阅读 · 0 评论