c++——抽象类以及string知识点补充

抽象类与纯虚函数

在这里插入图片描述
在这个类当中,我们定义了一个普通的虚函数,并且也定义了一个纯虚函数。
纯虚函数:从上面的定义可以看到,纯虚函数就是没有函数体,同时在定义的时候,其函数名后面要加上“= 0”。

1.在类成员方法的声明(不是定义)语句前面加个单词:virtual,她就会摇身一变成为虚函数。
2.虚函数的声明语句末尾中加个 =0 ,她就会摇身一变成为纯虚函数。
3.子类可以重新定义基类的虚函数,我们把这个行为称之为复写(override)。

附上一个c++期末考试的题目,抽象类得记住!
请编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,
二者都有计算对象面积的函数getArea()、计算对象周长的函数getPerim()

#include <bits/stdc++.h>
using namespace std;

class Shape{
    public:
        Shape(){}
        ~Shape(){}
    public:
        virtual double getArea() const = 0;
        virtual double getPerim() const = 0;
    private:
};

class Rectangle : public Shape{
    public:
        Rectangle(double _length, double _width) : length(_length), width(_width){}
        ~Rectangle(){}
    public:
        double getArea() const {return length * width;}
        double getPerim() const {return 2 * (length + width);}
    private:
        double length;
        double width;
};

class Circle : public Shape{
    public:
        Circle(double _radius) : radius(_radius){}
        ~Circle(){}
    public:
        double getArea() const {return radius * radius * M_PI;}
        double getPerim() const {return 2 * M_PI * radius;}
    private:
        double radius;
};

int main() {
    Rectangle * rec = new Rectangle(2, 3);
    Circle * cir = new Circle(3);
    cout << rec->getArea() << endl;
    cout << rec->getPerim() << endl;
    cout << cir->getArea() << endl;
    cout << cir->getPerim() << endl;
}

string

string newname(char[], pos) 切割0-pos的字符并存入newname
string newname(char[], pos, pos+length) 切割从下标为pos开始的length个长度的字符存入newname

#include<iostream>
using namespace std;
char ID[10];
cin >> ID;
string year(ID, 4);
string department(ID, 4, 2);
string c(ID, 6, 2);
cout << "year:" << year << endl << "department:" << department << endl << "class:" << c << endl;
查找最大元素

知识点insert
1.在index位置插入count个字符ch
string str = “meihao”; string sstr = str.insert(0,2,‘a’);//aameihao
2.index位置插入一个常量字符串
string str = “meihao”;string sstr = str.insert(1,“hello”);//mhelloeihao
/index位置插入常量string
string str = “meihao”;string sstr = str.insert(1,str);//mmeihaoeihao

Problem Description
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。
Input
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。
Output
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。
Sample Input

abcdefgfedcba
xxxxx

Sample Output

abcdefg(max)fedcba
x(max)x(max)x(max)x(max)x(max)
#include<bits/stdc++.h>
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int main() {
  fio
  string s;
  while (cin >> s) {
    char m = s[0];
    for (int i = 0; i < s.length(); i++)
  	  if (s[i] > m) m = s[i];
  	for (int i = 0; i < s.length(); i++) {
  	  if (s[i] == m) {
  		  s.insert(i+1, "(max)");
  		  i=i+5;
  	  }
    }
    cout << s<< endl;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你脸上有BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值