C++
刘家奕_
南昌航空大学的一位热爱公益的五好青年,喜欢运动尤其是篮球。并且对Web有兴趣的一只Web狗。今年才开始接触计算机科学与技术。写博客第一可以促进自己的学习,还可以和大家一起去分享自己的学习的经验,我感觉挺充实的,希望和大家一起进步!
展开
-
程序题(c++)
1.(程序题)几何形体处理程序: 输入若干个几何形体的参数,要求按面积排序输出。输出时要指明形状。Input:第一行是几何形体数目n(不超过100).下面有n行,每行以一个字符串s开头.若 s 是 ‘Rectangle’,则代表一个矩形,本行后面跟着两个整数,分别是矩形的宽和高;若 s 是 ‘Circle’,则代表一个圆,本行后面跟着一个整数代表其半径,π取3.14若 s 是 ‘Triangle’,则代表一个三角形,本行后面跟着三个整数,代表三条边的长度Output.原创 2022-04-28 19:30:25 · 3712 阅读 · 0 评论 -
编写一个时间类,实现时间的加、减、读和输出:(c++)
大一下实验:编写一个时间类,实现时间的加、减、读和输出:我用了+ -和输入输出运算符重载。#include"iostream"using namespace std;class Time{public: Time(int h=0,int m=0,int s=0):hour(h),minute(m),second(s){} void SetTime(int,int,int); Time operator + (Time &a); Time operator - (Time原创 2022-04-27 16:56:01 · 2045 阅读 · 0 评论 -
运算符重载实验(c++)大一下
生成一个表示复数的类FS。复数的实部sb和虚部xb作为其数据成员。提供成员函数print()显示复数(格式:-3+5i或6-2i),重载“+”、“-”为FS类的成员函数,用来计算两个复数的和、差。思路导航:① 定义类,设计构造函数和显示函数print();② 重载运算符“+”、“-”为类FS的成员函数。③ 实例化FS类的2个对象,并利用重载的运算符对其进行计算。另外,根据上述定义,试将上述的运算符重载成员函数改写成友元函数。友元函数写法:#include"...原创 2022-04-26 16:59:20 · 151 阅读 · 0 评论 -
虚函数和普通函数的区别(c++)
给几段代码:#include"iostream"using namespace std;class A{ public: virtual void show(){cout<<"showA"<<endl;} void printA(){cout<<"printA"<<endl;}};class B:public A{public: void show(){cout<<"showB"<<endl;}原创 2022-04-19 17:21:29 · 3711 阅读 · 0 评论 -
使用多态的游戏程序实例(c++)
使用多态的游戏程序实例(c++)原创 2022-04-19 16:32:16 · 5043 阅读 · 0 评论 -
虚函数和多态(c++)
在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。virtual 关键字只用在类定义里的函数声明中,写函数体时不用。多态的表现形式一下面给出一段代码:class CBase { public: virtual void SomeVirtualFunction() { } };class CDerived:public CBase { public : virtual void SomeVirtualFunction() { }};int原创 2022-04-19 15:39:46 · 2785 阅读 · 0 评论 -
直接基类与间接基类(c++考试必备)
在声明派生类时,只需要列出它的直接基类 派生类沿着类的层次自动向上继承它的间接基类 派生类的成员包括派生类自己定义的成员直接基类中的所有成员所有间接基类的全部成员下面给出代码段:#include <iostream>using namespace std;class Base { public: int n; Base(int i):n(i) { cout << "Base " << n << "...原创 2022-04-13 19:10:27 · 1419 阅读 · 0 评论 -
基类与派生类的指针强制转换(c++考试必备)
基类与派生类的指针强制转换:下面给出一段代码:#include <iostream>using namespace std;class Base { protected: int n; public: Base(int i):n(i){ cout << "Base " << n << " constructed" << endl; } ~Base() { cout <&..原创 2022-04-13 18:56:22 · 2206 阅读 · 0 评论 -
public继承的赋值兼容规则(c++期中)
1) 派生类的对象可以赋值给基类对象 b = d;2) 派生类对象可以初始化基类引用 base & br = d;3) 派生类对象的地址可以赋值给基类指针 base * pb = & d;注意:如果派生方式是 private或protected,则上述三条不可行。protected继承和private继承:...原创 2022-04-12 22:31:20 · 1028 阅读 · 1 评论 -
派生类的构造函数xu(c++)
接上节:class Base { public: int n; Base(int i):n(i) { cout << "Base " << n << " constructed" << endl; } ~Base() { cout << "Base " << n << " destructed" << endl; }};class Derived:public Base {原创 2022-04-12 22:22:39 · 581 阅读 · 0 评论 -
派生类的构造函数(c++)
class Bug { private : int nLegs; int nColor; public: int nType; Bug ( int legs, int color); void PrintBug (){ };};class FlyBug: public Bug // FlyBug是Bug的派生类{ int nWings; public: FlyBug( int legs,int color, int wings);//为什么给3个};.原创 2022-04-12 16:20:37 · 1723 阅读 · 0 评论 -
派生类——覆盖(c++)
覆盖:派生类可以定义一个和基类成员同名的成员,这叫覆盖。在派生类中访问这类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。基类和派生类有同名成员的情况:class base { int j;public: int i; void func();};class derived :public base{public: int i; void access(); void func(); };原创 2022-04-12 15:44:14 · 877 阅读 · 0 评论 -
继承关系和复合关系(c++)
类之间的两种关系:继承:“是”关系。基类 A,B是基类A的派生类。逻辑上要求:“一个B对象也是一个A对象”复合:“有”关系。类C中“有”成员变量k,k是类D的对象,则C和D是复合关系一般逻辑上要求:“D对象是C对象的固有属性或组成部分”。...原创 2022-04-11 20:58:36 · 701 阅读 · 0 评论 -
继承和派生(c++)
#include"iostream"using namespace std;class father{ //基类 public: string name; public: void setname(const string &name_){name=name_;} string getname() { return name; } };class son :public father{ private: int money; public:.原创 2022-04-05 19:59:59 · 1224 阅读 · 0 评论 -
重载赋值运算符“=”(c++)
#include"iostream"#include"cstring"using namespace std;class String{ private: char*str; public: String():str(NULL){} const char* c_str()const {return str;} String & operator = (const char *s); ~String();};String & String:: operat.原创 2022-04-04 23:23:49 · 1354 阅读 · 0 评论 -
运算符重载
俩种方法:1.写在成员函数内#include"iostream"using namespace std;class Complex{ public: double real ,imag; Complex(double r=0.0,double i=0.0):real(r),imag(i){} Complex operator - (const Complex &c); Complex operator + (const Complex &c); };.原创 2022-04-04 22:19:18 · 333 阅读 · 0 评论 -
构造函数(c++)
基本概念成员函数的一种 名字与类名相同,可以有参数,不能有返回值(void也不行) 作用是对对象进行初始化,如给成员变量赋初值 如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数 默认构造函数无参数,不做任何操作如果定义了构造函数,则编译器不生成默认的无参数的构造函数 对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数 一个类可以有多个构造函数为什么需要构造函数:1) 构造函数执行必要的初始化工作,有了构造函数,就不必专门再写初始化函数,也不用...原创 2022-04-04 21:48:58 · 89 阅读 · 0 评论 -
常引用的注意事项(c++期中考试)
1.可以过,可以用int变量初始化const & int 的引用#include"iostream"using namespace std;int main(){int i=0;const int & a=i;cout<<a;return 0;} 2.报错#include"iostream"using namespace std;int main(){const int i=0;int & a=i;cout<<a;re原创 2022-04-04 20:29:04 · 697 阅读 · 0 评论 -
类和对象的总结(c++期中考试必备)
小结:1.面向对象的程序设计方法具有抽象,封装,继承,多态四个基本特征。2.类的成员有成员变量和成员函数两种。3.成员函数之间可以互相调用,成员函数内部可以访问成员变量。4.私有成员只能在类的成员函数内部访问。默认情况,类的成员是私有的。5.可以用"对象名。成员名","引用名.成员名","对象指针->成员名"的方法访问对象的成员变量或调用成员变量。成员函数被调用时,可以用上述三种方法指定函数是作用在哪个对象上的。6.对象所占用的存储空间的大小等于各成员变量所占用的存储空间的大小原创 2022-04-04 20:10:26 · 1393 阅读 · 0 评论 -
类和对象,细节
类成员的可访问范围在类的定义中,用下列访问范围关键字来说明类成员可被访问的范围: private: 私有成员,只能在成员函数内访问 public : 公有成员,可以在任何地方访问 protected: 保护成员,以后再说 以上三种关键字出现的次数和先后次序都没有限制。如过某个成员前面没有上述关键字,则缺省地被认为是私有成员。class Man { int nAge; //私有成员 char szName[20]; // 私有成员public: void SetN.原创 2022-03-31 20:22:22 · 352 阅读 · 0 评论 -
类和对象c++
1) 对象间的运算和结构变量一样,对象之间可以用 “=”进行赋值,但是不能用 “==”,“!=”,“>”,“<”“>=”“<=”进行比较,除非这些运算符经过了“重载”。2) 使用类的成员变量和成员函数用法1:对象名.成员名 CRectangle r1,r2; r1.w = 5; r2.Init(5,4); Init函数作用在 r2 上,即Init函数执行期间访问的 w 和 h是属于 r2 这个对象的, 执行r2.Init 不会影响到 r1。3)用..原创 2022-03-31 19:58:10 · 761 阅读 · 0 评论 -
重载自增自减运算符
自增运算符++、自减运算符--有前置/后置之分,为了区分所重载的是前置运算符还是后置运算符,C++规定:#include"iostream"using namespace std;class CDemo{ int n; public: CDemo(int i=0):n(i){} friend CDemo &operator ++(CDemo&); friend CDemo operator ++(CDemo&,int); CDemo &opera原创 2022-03-30 23:48:11 · 350 阅读 · 0 评论 -
有如下类的定义。类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。(有两种方法即用成员函数和友元函数实现)
有如下类的定义。类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。(有两种方法即用成员函数和友元函数实现)#include <iostream>using namespace std; class Myclass {public: Myclass (int a,int b) { x=a;y=b;} void copy(Myclass & my); void print( ) { cout<<"x="<<x<<原创 2022-03-17 17:17:12 · 460 阅读 · 0 评论 -
设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能:
设计一个表示矩形的类Rect,其矩形成员长float * Length ,宽float * Width为指针变量,设计相应成员函数,实现下列功能:①构造函数设置长和宽(默认为1)。②复制构造函数用老对象生成新对象。③set()函数设置长和宽(默认为0)。④计算并返回长方形的周长。⑤计算并返回长方形的面积。⑥析构函数释放动态分配的长和宽。编制主程序应用指针建立对象测试类。#include<iostream>using namespace std;class Re...原创 2022-03-17 16:52:08 · 1388 阅读 · 0 评论 -
运算符重载C++
赋值运算符 ‘=’重载有时候希望赋值运算符两边的类型可以不匹配,比如,把一个int类型变量赋值给一个Complex对象,或把一个 char * 类型的字符串赋值给一个字符串对象,此时就需要重载赋值运算符“=”。 注意: 赋值运算符“=”只能重载为成员函数(需要特别记忆)下面给出相关代码进行理解:#include<iostream>#include<string.h>using namespace std;class String { priva...原创 2022-03-17 16:17:29 · 277 阅读 · 0 评论 -
创建一个Employee类
创建一个Employee类,该类中用字符数组存放Employee的信息,如姓名、地址、市、省、及邮政编码;每个成员函数的定义放在类定义之外;成员函数包括改变姓名数据成员等;构造函数完成成员数据的初始化;用Display()函数将完整的对象数据打印出来;其中数据成员是保护的,成员函数是公共的。#include"iostream"#include"cstring"using namespace std;class Employee{ private: char Name[15]; cha原创 2022-03-17 13:20:38 · 5837 阅读 · 2 评论 -
定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。
定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。#include"iostream"using namespace std;class time{ private: int H; int M; int S; public: bool setTime(int ,int ,int ); void print(); private: bool isValid(int ,int ,int );};原创 2022-03-13 17:26:13 · 10746 阅读 · 4 评论 -
定义一个满足下列要求的Date类
定义一个满足下列要求的Date类:①用下面的格式输出日期:日/月/年②可运行在日期上加一天操作③设置日期#include"iostream"using namespace std;class Date{ private: int year; int month; int day; public: void print(); void addOneDay(); bool setDate(int ,int, int); private: bool isVa原创 2022-03-13 17:24:40 · 2440 阅读 · 0 评论 -
封闭类的复制构造函数
封闭类的对象,如果是用默认复制构造函数初始化的,那么它里面包含的成员对象,也会用复制构造函数初始化。class A{public: A() { cout << "default" << endl; } A(A & a) { cout << "copy" << endl;}};class B { A a; };int main(){ B b1,b2(b1); return 0;}输出:defaultC原创 2022-03-06 16:15:01 · 280 阅读 · 0 评论 -
封闭类构造函数和析构函数的执行顺序
1.封闭类对象生成时,先执行所有对象成员的构造函数,然后才执行封闭类的构造函数。2.对象成员的构造函数调用次序和对象成员在类中的说明次序一致,与它们在成员初始化列表中出现的次序无关。3.当封闭类的对象消亡时,先执行封闭类的析构函数,然后再执行成员对象的析构函数。次序和构造函数的调用次序相反。封闭类实例class CTyre { public: CTyre() { cout << "CTyre contructor" << endl; } ~CTyre原创 2022-03-06 15:58:48 · 775 阅读 · 1 评论 -
什么是类、对象、类的成员、封闭类?
类:具有同种属性的对象称为类,是个抽象的概念。比如C++定义一个类class CTyre //轮胎类{ private: int radius; //半径 int width; //宽度 public: CTyre(int r,int w):radius(r),width(w) { }};class CEngine //引擎类{};class CCar { //汽车类 private: int price; //价原创 2022-03-06 12:03:54 · 407 阅读 · 0 评论 -
1046. 最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所以...原创 2022-02-21 16:57:13 · 58 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 =..原创 2022-02-15 15:47:42 · 182 阅读 · 0 评论 -
标准C++中map容器的用法总结
一、简单介绍map 是一个容器,它用于储存数据并且能从一个数据集合中取出数据。它的数据组成包含两项,一个是它的数据值,一个是用于排序的关键字。其中关键字是惟一的,它用于将数据自动排序。而每个元素的数据值与关键字无关,可以直接改变。需加载的头文件:#include<map>using namespace std;具体可参考:https://blog.csdn.net/zhuochuyu7096/article/details/82817197https://blog.csdn.转载 2022-02-13 16:09:09 · 636 阅读 · 0 评论 -
AcWing 129. 火车进栈
原题链接:https://www.acwing.com/problem/content/description/131/https://www.acwing.com/problem/content/description/131/这里有 nn 列火车将要进站再出站,但是,每列火车只有 11 节,那就是车头。这 nn 列火车按 11 到 nn 的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。原创 2022-02-13 15:48:21 · 309 阅读 · 0 评论 -
C++的库函数搜集
1.头文件:#include <stdlib.h>定义函数:int tolower(int c);函数说明:若参数 c 为大写字母则将该对应的小写字母返回。返回值:返回转换后的小写字母,若不须转换则将参数c 值返回。例子:A->a#include<bits/stdc++.h>using namespace std;int main(){ char a='A'; char b; b=tolower(a); cout<<b; re原创 2022-02-12 15:18:15 · 383 阅读 · 0 评论 -
93. 递归实现组合型枚举
从 1∼n1∼n 这 nn 个整数中随机选出 mm 个,输出所有可能的选择方案。输入格式两个整数 n,mn,m ,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行 11 个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。数据范围n>0n>0,0≤m≤n0≤m≤n,n+(n−m)≤25n+(n−m)≤25输入样例..原创 2022-02-11 19:56:44 · 448 阅读 · 0 评论 -
break跳出几层循环,是一层还是全部?
break跳出几层循环,是一层还是全部?这个问题我相信大家都有过这样的疑惑。在for循环使用break当满足if条件语句时,则会执行break,跳出整个for循环。在while循环使用break和for差不多。总的来说,break是跳过所有的循环。...原创 2022-02-11 13:50:23 · 26915 阅读 · 13 评论 -
栈(Stack )
栈(Stack )是支持push和pop两种操作的数据结构。push是在栈的顶端放入- -组数据的操作。反之,pop是从其顶端取出一-组数据的操作。 因此,最后进人栈的一-组数据可以最先被取出 (这种行为被叫做LIFO: Last In First Out,即后进先出)。通过使用数组或者列表等结构可以很容易实现栈,不过C++、Java等程序 语言的标准库已经为我们准备好了这一常用结构,在比赛中需要时不妨使用它们。C++的标准库中,stack::pop完成的仅仅是移除最顶端的数据。如果要访问最顶端的数据,需要原创 2022-02-10 16:46:33 · 983 阅读 · 1 评论 -
1209. 带分数
ACwing的链接为https://www.acwing.com/problem/content/description/1211/https://www.acwing.com/problem/content/description/1211/100 可以表示为带分数的形式:100=3+69258714100=3+69258714还可以表示为:100=82+3546197100=82+3546197注意特征:带分数中,数字 1∼91∼9 分别出现且只出现一次(不包含 00)。类似这样的带分数原创 2022-02-05 22:35:54 · 1004 阅读 · 0 评论