
cpp基础知识
不停---
吹皱一池春水
buting.site
展开
-
c++sort()函数的cmp函数编写
1.基本数据类型的函数编写1.1默认情况#include<iostream>#include<algorithm>using namespace std;int main(){ int num[8]={1,2,3,4,5,90,20}; sort(num,num+7);}sort函数默认情况下 以从小到大的顺序进行排序,对于基础数据类型in...原创 2020-02-19 15:07:23 · 3437 阅读 · 0 评论 -
多态
定义:不同类型或实体对于同一消息有着不同的反应;type1//重载多态:class A{ public: void f(){return "first";} void f(int x){return "second";}};//子类型多态:不同的对象调用同名的重定义函数,表现出不同的行为;class A{ public: void f(){return "fir...原创 2019-04-28 21:56:58 · 229 阅读 · 0 评论 -
运行时多态和虚函数
class A{ public: virtual std::string tostring(){ return "A";}}class A{ public: virtual std::string tostring(){ return "A"; } };class B:public A{ public: std::string tostring(){ ...原创 2019-04-28 22:21:19 · 181 阅读 · 0 评论 -
cpp小知识点(2)(cpp笔记)
常量指针/常指针://指向常量值的指针;const int x=5;const int* test=&x;//c此时*test指向的是const值 不可以通过*test的操作来修改x的值const char* s1="hello";//注意:使用char* s2="hello";是不可行的;因为,hello是常量,const类型,无法赋值给char*类型此时,cpp将hello...原创 2019-04-19 21:01:23 · 199 阅读 · 0 评论 -
cpp小知识点(3) cpp笔记
内联函数声明:inline int max(int a,int b){ return (a>b?a:b);}//注意:以下声明方式不可行int max(int a,int b);inline int max(int a,int b){........}模板函数:#include<iostream>using namespace std;templat...原创 2019-04-20 13:25:37 · 158 阅读 · 0 评论 -
PAT BASIC 1039 到底买不买
题目:https://pintia.cn/problem-sets/994805260223102976/problems/type/7#include<iostream>#include<string.h>int main(){ char s_sold[1000]; char s_buy[1000]; scanf("%s", &s_sold); s...原创 2019-04-20 14:28:29 · 125 阅读 · 0 评论 -
访问构造属性
class A{ public: int i; protected: int j; privat: int k;};class B:public:A//private:A 父类所有成员到子类中全部变为private 孙类无法调用 protected:A 父类public protected 变为protected 孙类可以调用{ public: cout<<i;...原创 2019-04-29 21:58:25 · 141 阅读 · 0 评论 -
Cpp小知识点(8) 静态成员
静态成员的定义和初始化declaration //静态成员的声明与类实例的成员并非绑定,在没有用类定义对象的情况下,也可以用static 数据;definition1.类型为constexpr的static必须在类中定义并初始化(c++17后2.类型为const int 或inline 则可以在类中定义并初始化(注意可以与必须的区别3.其他需要在类外进行定义和初始化,并且不能带sta...原创 2019-04-25 11:09:32 · 199 阅读 · 0 评论 -
C++上机练习 Test1
TEST 1:1.已知字符串类MyString的定义为: class MyString { public: MyString(const char* pData= NULL); // 普通构造函数 MyString(const MyString &); // 拷贝构造函数 ~ MyString(); // 析构函数 MyStri...原创 2019-05-08 15:06:46 · 261 阅读 · 0 评论 -
manioulater 流操纵符
iomanipendl;//将行结束序列插入到输入流,并确保输出的字符能够被写到目的地流里;setw(n);//将下一个输出字段的宽度设置为n个字符,如果输出值所需域宽小于n,则额外的空间用空格填充。这种性质是短暂的,这意味着它只影响下一个插入到流里面的数据值的输出宽度;setprecision(digits);//将输出流的精度设置为digits。精度说明的解释依赖于其他流的设置。如果你将...原创 2019-05-08 16:20:40 · 138 阅读 · 0 评论 -
拷贝构造 和深浅拷贝
拷贝构造:class harry{ private: int side; public: setside(); setside(steside&s);}setside(){ side=1; } setside(setside&s) { this->side=s.side; }深拷贝:Deep copy浅拷贝:Shallow cop...原创 2019-04-25 17:27:55 · 161 阅读 · 0 评论 -
C++ sort 函数使用
头文件时间复杂度 n*logn//注意:自己写不好复杂度低的比较函数还是用sort比较好#include<algorithm>sort 函数 双参数使用int a[100];//定义一个数组for(int i=0;i<100;i++){ cin>>a[i];//输入数组元素}sort(a,a+100);//接着使用sort函数//a 排序开...原创 2019-05-01 11:35:37 · 250 阅读 · 0 评论 -
c++ 左值 纯右值 将亡值
通俗理解(c++03能放在等号左边的是左值只能放在等号右边的是右值左值也可以作为右值使用c++11左值制定了一个函数或者对象,它是一个可以取地址的表达式。右值是不和对象相关联的值(字面量)或者其求值结果是字面量或者是一个匿名的临时对象。如:32 ‘a’ i++(a+b) //匿名的临时对象;&x;将亡值:将纯右值转换为右值引用的表达式int a=1;int...原创 2019-05-01 16:03:30 · 242 阅读 · 0 评论 -
cpp复习
运算符重载:bool Rectangle::operator==(const Rectangle& s){ if(this==&s) return true; if((xlow==s.xlow)&&(ylow==s.ylow)&&(height==s.height)&&(width==s.width)) return tru...原创 2019-05-24 13:49:54 · 170 阅读 · 0 评论 -
Cpp小知识点(7) 代理构造 不可变对象 和静态成员
代理构造class T{ pulic: T():T(0){}; T(int i):T(i,0){}; T(int i,int k) { num1=i; num2=j; } -----}//d代理构造 如上所示,在初始化列表中调用其他初始化构造函数;不可变对象和类1.所有数据成员处于private状态2.或无更改器函数 no mutators...原创 2019-04-24 11:36:18 · 119 阅读 · 0 评论 -
名字隐藏与重定义
基类同名函数隐藏:class A{ public: f(){cout<<"ff";}};class B:public A{ public: f(int i){cout<<"ffaa";}};int main(){A a;a.f{};//无法调用该函数;//注意:在调用中,我们将派生类看作内部作用域而将基类看作外部作用域,所以在派生类内部与基类重...原创 2019-04-28 15:23:18 · 210 阅读 · 0 评论 -
类的构造和析构函数(2)
stock类的改造class stock{private: std::string company; long sharee; double share_val; double total_val; void set_tot(){ total_val=shares*share_val;}public: stock(); stock(const std::string &...原创 2019-04-10 16:09:29 · 118 阅读 · 0 评论 -
const成员函数
注意:只要类方法不修改调用函数,就将其声明为const。const stock land=stock("nico");land.show();对于当前的cpp标准,编译器将拒绝第二行,因为show()的代码无法确保调用函数不被修改——调用对象和const一样,不应该被修改。解决方法:修改show的声明和使用声明:void show()const;函数定义开头:void sto...原创 2019-04-10 16:16:59 · 143 阅读 · 0 评论 -
构造函数和析构函数总结
构造函数初始化stock stock1=stock("alice",10.10.0);stock stock1("alice",10,10.0)stock *pc=new stock("alice",10,10.0)stock();stock stock1;stock *pc=stock1;析构函数:~stock();原创 2019-04-10 16:25:38 · 520 阅读 · 0 评论 -
c++ this指针
紧接上文:stock类中的每一个成员函数,其调用时通常只涉及一个对象,然而在现实中,并不是所有的方法都是如此,有时候方法可能涉及两个方向,在这种情况下,就要用到this指针在stock类中返回价值最高的股票class stock{ .... double total_val; public: double total()const {return total_val}}...原创 2019-04-11 16:01:14 · 108 阅读 · 0 评论 -
c++ 对象数组
前结提要:构造函数与析构函数const成员函数this 指针注意:倘若使用类对象数组,则该类必须有默认构造函数。下面给出几种定义类对象数组的方法:1使用默认构造函数构造stock alice[2];//用默认构造函数构造一个array2使用构造函数来初始化数组元素stock alice[1]={stock("aa",10,1);stock('bb",10,1);}/...原创 2019-04-11 19:05:00 · 387 阅读 · 0 评论 -
cpp小知识点(4) cpp笔记
对象拷贝和匿名对象int a{3};//列表初始化int a={3};//拷贝列表初始化Circle circle{5.5};Circle circle={3};//用匿名对象做列表初始化Circle circle1=circle{10};//拷贝列表匿名初始化局部类和嵌套类局部类://void f(){ class C{ }; ......}/嵌套在函数中,也只...原创 2019-04-21 18:32:32 · 140 阅读 · 0 评论 -
cpp Raw string literals
R “delimiter(raw_characters)delimiter”(c++11 "原始/生“字符串字面量)//使用方法如下const char* s1=R"helloworld";//s1与s2和s3效果相同const char*s s1="hello\nworld";const char*s s1=R"NoUse(helloworld)NoUse";...原创 2019-04-25 21:15:54 · 263 阅读 · 0 评论 -
c++类作用域
在类中定义的名称的作用域为整个类,作用域为整个类的名称只在该类是已知的,在类外是未知的。因此,可以在不同的类中使用名称相同的类成员而不引起冲突。 stock sleeper("exxx",1,1.0);//create object sleeper.show();//use object to invoke a member function show();//invalid void s...原创 2019-04-17 14:23:29 · 1112 阅读 · 0 评论 -
C++ 第一章复习题
1.source file2.// /* */3.<> 优先在系统目录中寻找 然后在当前目录中寻找" " 优先在当前目录中寻找 然后在系统目录中寻找4.const float l=2.64;5 main return6....原创 2019-04-26 19:24:06 · 304 阅读 · 0 评论 -
重载一般二元算术运算符
调用一般二元运算符:vec2d a{1,2},b{3,6};double z{1,3};vec2d c=a+b;//a.operator+(b);函数原型:vec2d vec2d::operator+(vec2d);vec2d d=a+z;//a.operator(z);函数原型:vec2d vec2d::operator+(double);vec2d e=z+b;//z.operato...原创 2019-05-02 09:15:50 · 283 阅读 · 0 评论 -
cin.get cin.getline cout cout.put的区别
程序的输入都建有一个缓冲区,即输入缓冲区。每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入.void test_input() {  ...转载 2019-04-18 16:41:39 · 269 阅读 · 0 评论 -
cpp小的知识点(1)19.4.18
cppstyle类型转换cout<<static_cast(double)(1);//输出double类型的1cpplist初始化//直接list初始化int a{1};//拷贝list初始化int a={1};reinterpret_cast const_cast 区别在这里插入代码片静态类型和动态类型的区别静态类型语言:c,c++ 在编译时检查代码动态...原创 2019-04-18 22:03:08 · 140 阅读 · 0 评论 -
构造函数链和析构函数链
构造函数链:调用次序:先父后子 依次调用构造函数析构函数链:调用次序:子先父后;原创 2019-04-28 14:40:34 · 390 阅读 · 0 评论 -
类的构造和析构函数(1)
stcok类样例:class stock{private: std::string company; long sharee; double share_val; double total_val; void set_tot(){ total_val=shares*share_val;}public: void acquire(const std::string &co...原创 2019-04-10 15:03:51 · 279 阅读 · 0 评论