【C++总结】

历年复试编程大题专栏

operator前置++和后置++

注意最后复习:文件操作,输入输出流。错题集,类的相关细节:类模板等,上机编程大题

12.6 p25
12.7 p31
12.8 p

在这里插入图片描述

类继承、拷贝构造、虚函数等

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果不是父类指针调用子类构造函数,则虚函数加不加无所谓,子类对象仍会先调用子类的析构函数,再调用基类的析构函数!

3.What is the output of the following?  (4 score)
#include <iostream>
using namespace std; 
class A {
public:
A(){cout << ".";}
~A(){cout << ".";}

};
class B : public A {
	A _a; 
public:
	B(){cout << ".?";};
	~B(){cout << "!.";};
};

B b;
int main() { }

B b先调用父类A的构造函数,然后调用自己的,构造 2次
析构时,先析构自己的~B再析构父类的 ~A,析构2次
在这里插入图片描述

多继承时候注意,如果继承的多个父类有同名函数,调用时指顶父类命名空间A::

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决了孙子MUle不知道是调用哪个父亲继承爷爷的函数,实际上都是一个爷爷的函数。

虚继承的构造函数优先普通继承调用,与构造相反顺序调用析构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Sizeof对象输出

在这里插入图片描述

设置protected访问权限的基类成员,对于派生类和外部函数有何影响?
派生类的成员函数可直接访问该基类成员,外部函数则不能直接访问。

在这里插入图片描述
在这里插入图片描述

如果example加上&o则少析构一次

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

dog: high
dog: low
dog: smaller
//此处父类p调用的是无参数fb,B类无法提供,因此只能调用dog类,
如果将B类fb的默认参数去掉则调用B类fb
dog: middle
dog: black

在这里插入图片描述
在这里插入图片描述

算法类程序填空

在这里插入图片描述
字符串结尾’\0’不是’\n’
对字符串大写操作前检查其是否在’a’~'z’

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 利用展开式y=1/1!-2/2!+3/3!-..,求y的近似值。(每空1.5分,共7.5分)
(5)return p      
(6) fabs(x1-x0)>1e-6    
(7) x0=x1
(8) 1.0*j*i/fc(i)   
(9)1*j

输出:y=0.367879

在这里插入图片描述

表达式、运算符细节

if (i % 3) 表示i%3!=0 而不是i%3==1

在这里插入图片描述
在这里插入图片描述

x=6,x-=x*x   x=6-6*6=-30 
x+=-30 x=x-30=-30-30=-60

在这里插入图片描述
区别下题:
在这里插入图片描述
遇到&&和|| 一定要注意短路原则:
&&前遇到0后面就不执行,结果直接返回0
||前面遇到1后面也不执行,结果直接返回1

多个if语句只有1个else
else与其最近的if配套

主函数int main{ }在前,函数fun{…}定义在后时,一定要在主函数前先声明void fun();

计算除法时注意int型需要转为double型

 f1*1.0/f2     
 或1.0*f1/f2 
 或 (double) f1/f2  
 整形f1,f2化成浮点型

补充switch语句时注意有没有break;没有需要补充
执行到default语句那怕没有break也会跳出
在这里插入图片描述
宏定义#define问题,不要自己想当然给运算加括号,直接带入原来的定义,注意乘号优先级

链表类模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

operator运算符重载+类模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

只输出a:
在这里插入图片描述

在这里插入图片描述

#include<iostream>
using namespace std;
class point
{
public:
    point(int a, int b):x(a), y(b){}
point& operator++()  
 // 前置++
    {
        This->x++;
        This->y++;
        return *this;  //返回对象引用
    }
point operator++(int) 
//后置++ 
    {
        point a = *this;
        // 或者++a;
        a.x++;
        a.y++;
        return a;    //返回对象
    }
private:
    int x;
    int y;
};

字符串处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1strlen(s)+12[ ]st
(3) String
(4) st

在这里插入图片描述

在这里插入图片描述

文件流操作

在这里插入图片描述

输入输出流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CP3圣保罗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值