C++考试

news2024/11/24 8:42:53

文章目录

  • 1.程序填空
    • 1.1函数调用
    • 1.2前置和后置“++”、“--”运算符重载
    • 1.3异常处理
    • 1.4文本文件读取
  • 2.程序阅读
    • 2.1C++编程基础
    • 2.2继承与派生
    • 2.3静态成员
    • 2.4继承与派生
    • 2.5 输入输出
    • 2.6 模板
  • 3.程序改错
    • 3.1三种访问权限
    • 3.2 友元
    • 3.3抽象类不能实例化对象
    • 3.4常数据成员初始化必须使用构造函数的初始化列表
    • 3.5以引用传递的方式向函数传递对象
  • 4.程序设计
    • 4.1运算符重载
    • 4.2多态的程序实现方法

1.程序填空

1.1函数调用

#include <iostream>
using namespace std;
class Test
{
public:
	void set(char ch)
	{
		c = ch;
	}
	void show()
	{
		cout << "char in Test is:" << c << endl;
	}
private:
	char c;
};
int main()
{
	Test test1,test2;
	test1.set('a');
	test2.set('b');
	test1.show();
	test2.show();
	return 0;
}

1.2前置和后置“++”、“–”运算符重载

模板就是这样,具体根据题目要求

point& operator++(){
//前置运算符,需要引用返回,不需要参数。返回自增后的值
		x++;
		y++;
		return *this;
	}
	point operator++(int){
	//后置++,不需要引用返回,需要参数区分。返回自增前的值
		point temp(x,y); 
		x++;
		y++;
	    return temp;
	}

1.3异常处理

void check(int score)
{
	try
	{
		1.if (score > 100)throw"成绩超高!";
		2.else if (score < 60)throw"成绩不及格!";
		else cout << "the score is OK..." << score << endl;
	}
	3.catch (char* s)
	{
		cout << s << endl;
	}
}
int main()
{
	check(45);
	check(90); 
	check(101);
	return 0;
}

1.4文本文件读取

int main()
{
    char s[100];
    1.fstream infile("f2.dat", ios::in); //定义文件流对象,打开磁盘文件
    2. if (!infile)                                  //如果打开失败,infile 返回0值
    {
        cerr << "打开 f2.dat 文件失败!\n" << endl;
        cerr << "f2.dat 可能不存在,或者文件已损坏,或者没有权限!\n" << endl;
        cerr << "按任意键退出程序...\n" << endl;
        getch();
        exit(1);
    }
   3. while (!infile.eof())
    {
        infile.getline(s, sizeof(s));
        cout << s << endl;
    }
    infile.close();//关闭磁盘文件“f2.dat”
    return 0;
}

2.程序阅读

2.1C++编程基础

#include<iostream>
using namespace std;
void test1()
{
	const int T = 5;//控制平方根和最大n值
	int i, s = 0;
	for (i = 1; i <= T; i++) 
	{
		s += i * i;//实现平方和
		cout << s << ' ';
	}
	cout << endl;
}
int main()
{
	test1();
}

在这里插入图片描述

2.2继承与派生

class A 
{
	int a;
public:
	A(int aa = 0) { a = aa; cout << "A():" << a << endl; }
};
class B :public A {
	int b;
public:
	B(int aa = 0, int bb = 0) : A(aa) { b = bb; cout << "B():" << b << endl; }
};
int main() 
{
	B x(5), y(6, 7);
	return 0;
}

在这里插入图片描述

2.3静态成员

class CTest {
public:
	CTest(int iVar) :m_iVar(iVar) { m_iCount++; }
	~CTest() { }
	void Print()const;
	static int GetCount() { return m_iCount; }
private:
	int m_iVar;
	static int m_iCount;
};
int CTest::m_iCount = 0;
void CTest::Print()const
{
	cout << this->m_iVar << " " << this->m_iCount << " ";
}
int main() {
	CTest oTest1(6);
	oTest1.Print();
	CTest oTest2(8);
	oTest2.Print();
	cout << CTest::GetCount();
	return 0;
}

定义了一个名为CTest的类,该类具有一个整数成员变量m_iVar和一个静态整数成员变量m_iCount。它还定义了一个构造函数,该构造函数使用初始化列表初始化成员变量,并将静态成员变量递增1。它还定义了一个析构函数和一个名为Print()的公共成员函数,该函数打印对象的成员变量值和静态成员变量值
在这里插入图片描述

2.4继承与派生

class Base {
private: int Y;
public:
	Base(int y = 0) { Y = y; cout << "Base(" << y << ")\n"; }
	~Base() { cout << "~Base()\n"; }
	void print() { cout << Y << " "; }
};
class Derived :public Base {
private: int Z;
public:
	Derived(int y, int z) :Base(y)
	{
		Z = z; cout << "Derived(" << y << "," << z << ")\n";
	}
	~Derived() { cout << "~Derived()\n"; }
	void print() { Base::print(); cout << Z << endl; }
};
int main() {
	Derived d(10, 20); d.print();
	return 0;
}

在这里插入图片描述

2.5 输入输出

#include<iostream>
using namespace std;
int main()
{
	cout.flags(ios::oct);
	cout << "OCT:161=" << 161 << endl;
	cout.flags(ios::dec);
	cout << "DEC:161=" << 161 << endl;
	cout.flags(ios::hex);
	cout << "Hex:161=" << 161 << endl;
	cout.flags(ios::uppercase|ios::hex);
	cout << "UPPERCASE:161=" << 161 << endl;
	return 0;
}

在这里插入图片描述
输入输出知识点

2.6 模板

#include<iostream>
#include<cstring>
using namespace std;
template<typename T>
//声明函数模板
T myMax(T x, T y) {
    cout << "This is a template function! max is:";
    return x > y ? x : y;
}
const char* myMax(const char* x, const char* y) {  //重载的普通函数
    cout << "This is the overload function with char*,char*! max is:";
    return strcmp(x, y) > 0 ? x : y;
}
//重载的普通函数
int myMax(int x, int y) {
    cout << "This is the overload function with int, int! max is:";
    return x > y ? x : y;
}
int myMax(int x, char y) { //重载的普通函数
    cout << "This is the overload function with int,char! max is;";
    return x > y ? x : y;
}
int main() 
{
    const char* s1 = "Beijing 2008", * s2 = "Welcome to Beijing!";
    cout << myMax(2, 3) << endl;//调用重载的普通函数:int myMax(int x;int y)
    cout << myMax(2.0, 3.0) << endl;//调用函数模板,此时T被 double 取代
    cout << myMax(s1, s2) << endl; //调用重载的普通函数 :char* myMax(char * x,char* y)
    cout << myMax(2, 'a') << endl;//调用重载的普通函数:int myMax(int x,char y)
    cout << myMax(2.3, 'a') << endl; //调用重载的普通函数:int myMax(int x,char y)
    return 0;
}

在这里插入图片描述

3.程序改错

3.1三种访问权限

#include<iostream>
using namespace std;
class T {
protected:             //protected 改为 public 类和对象 
	int p;
public:
	T(int m) { p = m; }
};
int main() {
	T a(10);
	cout << a.p << endl;
}

3.2 友元

#include<iostream>
using namespace std;
class Date;
class Time {
public:
	Time(int h, int m, int s) { hour = h; minute = m; sec = s; }
	void show(Date& d);
private:
	int hour, minute, sec;
};
class Date {
public:
	Date(int m, int d, int y) { month = m, day = d, year = y; }
	void Time::show(Date&);//应当改为友元函数在前面加friend,
	否则show函数将无法访问Date类的私有变量
private:
	int month, day, year;
};
void Time::show(Date& d) {
	cout << d.month << "-" << d.day << "-" << d.year << endl;
	cout << hour << ":" << minute << ":" << sec << endl;
}
int main() {
	Time t1(9, 23, 50);
	Date d1(5, 1, 2023);
	t1.show(d1);
	return 0;
}

3.3抽象类不能实例化对象

#include<iostream>
using namespace std;
class CBase {
public:
	CBase(int iBase = 0) :m_iBase(iBase) {}
	virtual void Show() = 0;
	int Get() const { return m_iBase; }
private:
	int m_iBase;
};
class CDerive :public CBase {
public:
	CDerive(int iBase = 0, int iDerive = 0) :CBase(iBase)
	{
		m_iDerive = iDerive;
	}
	void Show()
	{
		cout << CBase::Get() << "," << m_iDerive << endl;
	}
private:
	int m_iDerive;
};
int main() {
	CBase obj(10);//虚函数不能初始化成员变量
	因此应当改为CDerive(10)
	obj.Show();
	return 0;
}

3.4常数据成员初始化必须使用构造函数的初始化列表

#include<iostream>
using namespace std;
class CTest {
public:
	CTest(int iVar = 0) { m_iVar = iVar; }
	//初始化const修饰的成员变量
	//CTest(int iVar = 0):m_iVar(iVar)
	{};
	void Print()const { cout << m_iVar << endl; }
private:
	const int m_iVar;
};
int main() {
	const CTest oTest(13);
	oTest.Print();
	return 0;
}

3.5以引用传递的方式向函数传递对象

#include<iostream>
using namespace std;
void swap(int& a, int& b)
{
	int tmp; tmp = a; a = b; b = tmp;
}
int main()
{
	int a = 19, b = 15;
	cout << "a=" << a << "," << "b=" << b << endl;
	swap(&a, &b);                //swap(a,b)引用传递
	cout << "a=" << a << "," << "b=" << b << endl;
	return 0;
}

4.程序设计

4.1运算符重载

#include <iostream>
using namespace std;
class Point {
	private:
		int x;
		int y;
	public:
		Point(int x1 = 0, int y1 = 0) : x(x1), y(y1) {}
		void show();       
		friend Point operator+(const Point &, const Point & );
		friend Point operator-(const Point &, const Point & );
};
/*!!!三个成员函数的定义!!!*/ 
void Point::show() {
	cout << "(x,y) = " << "(" << x << "," << y << ")" << endl;
}

Point operator+(const Point &a1, const Point &a2) {
	return Point(a1.x + a2.x, a1.y + a2.y);
}

Point operator-(const Point &a1, const Point &a2) {
	return Point(a1.x - a2.x, a1.y - a2.y);
}
int main()
{
	Point a1(1, 2);
	Point a2(4, 5);
	Point a;
	a = a1 + a2;
	cout << "a: ";
	a.show();
	a = a1 - a2;
	cout << "a: ";
	a.show();
	return 0;
}

4.2多态的程序实现方法

#include<iostream>
using namespace std;
class Shape { 
	public:
		virtual double getArea () = 0;	
};
/*!!!!  Rectangle类的定义   !!!!!*/
class Rectangle: public Shape { 
	public :
		Rectangle(double x, double y): length(x), width(y) {
		}
		double getArea() {
			return length * width;
		}
	private:
		double length, width;
};
/*!!!!  Circle类的定义   !!!!!!*/
class Circle: public Shape { 
	public :
		Circle(double r): R(r) { 
		}
		double getArea() {
			return 3.14 * R * R;
		} 
	private:
		double R;
};

int main() {
	Shape *rect = new Rectangle(2, 3);
	cout << rect->getArea() << endl;
	Shape *circle = new Circle(2);
	cout << circle->getArea() << endl;
	delete rect;
	delete circle;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试题总结

1、0513 1.重载和重写的区别? 重载发生在同一类中&#xff0c;同名的方法如果有不同的参数列表&#xff08;类型不同、个数不同、顺序不同&#xff09;则视为重载。 重写发生在父子类中&#xff0c;重写要求子类重写之后的方法与父类被重写方法有相同的返回类型&#xff0c;比…

Linux:在VMware中,如果虚拟机之前可以上网,之后突然不能上网,怎么办?

Linux系统版本&#xff1a;centos 7.5 x64位 VMware版本&#xff1a; VMware Workstation Pro 16 文章目录 前言一、什么原因会导致这种问题并如何解决它&#xff1f;原因①&#xff1a;虚拟机没有启动网络服务原因②&#xff1a;外部主机上VMware的【VMware NAT Service】服务…

Linux常用命令——htpasswd命令

在线Linux命令查询工具 htpasswd apache服务器创建密码认证文件 补充说明 htpasswd命令是Apache的Web服务器内置工具&#xff0c;用于创建和更新储存用户名、域和用户基本认证的密码文件。 语法 htpasswd(选项)(参数) 选项 -c&#xff1a;创建一个加密文件&#xff1b;…

用“平面两点距离”求三角形面积,再用“三角形面积”多边形面积

不小于 3 边的多边形&#xff0c;都可以任一顶点发出的边切分为 n - 2 个三角形。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&am…

跟着我学 AI丨教育 + AI = 一对一教学

随着人工智能&#xff08;AI&#xff09;技术的迅速发展&#xff0c;它已经开始了改变教育的方式。本文将介绍AI在教育行业中的应用场景&#xff0c;当前从事AI 教育的公司有哪些以及这些公司所提供的教育产品的特点&#xff0c;和未来AI 教育的潜在实现方式。 AI在教育行业的…

【C++初阶】C/C++内存管理

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C初阶 ⭐代码仓库&#xff1a;C初阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

【数据结构】一篇带你彻底了解栈

文章目录 栈的概念及结构栈接口的实现栈的初始化入栈出栈获取栈顶元素判断栈是否为空获取栈中有效元素个数栈的销毁 总结 栈的概念及结构 栈&#xff1a;一种线性数据结构&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶 (Top&…

Node.js 学习系列(三) —— REPL

Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境&#xff0c;类似 Windows 系统的终端或 Unix/Linux shell&#xff0c;可以在终端中输入命令&#xff0c;并接收系统的响应。 Node 自带了交互式解释器&#xff0c;可以执行以下任务&#xff1a; 读取 —…

Spring 初始导读

1.Spring初始 1. 为什么要学框架 学习框架相当于从"小作坊"到"工厂"的升级 , 小作坊什么都要做 , 工厂是组件式装配 , 特点就是高效. 2.框架的优点展示(SpringBoot Vs Servlet) 使用SpringBoot 项目演示框架相比 Servlet 所具备的以下优点: 无需配置 …

Three.js 实战【1】—— 3D全景视图开发

Three.js 实战【1】—— 3D全景视图开发 摘要 1、3D视图Demo2、准备工作——搭建好一个开发环境3、RGBELoader——高范围动态图像加载器4、HDR——高动态范围图像5、使用HDR实现3D全景视图6、直接通过图片纹理进行实现 摘要 在现代开发过程当中&#xff0c;3D开发是越来越不可…

find,which,whereis,grep,bc,uname,free,nano,history指令的语法,功能与选项等

Tips x86_64 与 x64 都是指 64位x86 指的是 32位 find指令的语法&#xff0c;功能与选项 语法&#xff1a;find 目录 -name 文件名功能&#xff1a;在指定的目录之下进行文件查找&#xff08;递归式查找&#xff09;选项&#xff1a;它的选项也非常多&#xff0c;讲个 -name…

【Java 基础】File IO流

文章目录 1. File1.1 File类概述和构造方法1.2 绝对路径和相对路径1.3 File 类的常用方法1.4 递归删除文件夹及其下面的文件 2. IO2.1 分类2.2 字节输出流2.3 字节输入流2.4 文件的拷贝2.5 文件拷贝效率优化2.6 释放资源2.7 缓冲流2.8 编码表 3. commons-io 工具包3.1 API 1. F…

VSCode中安装GPT插件详细教程+gpt4改进

目录 安装插件 A.安装CodeGPT B.安装chatgpt 1.VSCode安装插件&#xff0c;使用本地下载vsix文件 2.获取 ChatGPT API 密钥 3.配置settings.json gpt4和3.5对比 GPT-4主要有三大改进点 局限性 安装插件 AB功能一样&#xff0c;A安装的人最多&#xff0c;GPT具体功能可…

K8s之标签、Node选择器与亲和性详解

文章目录 一、标签1、标签是什么&#xff1f;2、给Pod打标签3、给Node节点打标签4、查看标签资源 二、Node选择器1、nodeName(指定Pod调度到指定Node节点)2、nodeSelector(指定Pod调度到具有指定标签的Node节点) 三、亲和性1、Node亲和性-nodeAffinity2、Pod亲和性-podAffinity…

软件测试项目实战经验附视频以及源码【医疗项目,社区管理,前后端分离项目,银行项目,金融项目,车载项目】

前言&#xff1a; ​​大家好&#xff0c;我是测试小马。 很多初学的测试小白都在烦恼找不到合适的项目去练习&#xff0c;这也是难倒大部分测试小白的一个很常见的问题&#xff0c;项目经验确实是每一个测试非常宝贵的经验&#xff01;这里小马哥给大家找了一些常用的项目合…

AJ-Captcha验证码使用教程源码解读

1.背景 验证码的主要作用是防止机器人恶意使用我们的程序........ 今天我们结束一款强大的验证码组件:aj-captcha 官方文档:AJ-Captcha在线体验 大家一定要认真阅读官方文档 2.项目启动与快速测试 启动后端: 快速页面测试: 使用浏览器访问这个页面 有修改后端源码的情况…

MySQL触发器Trigger加载以及目前局限

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a; 亮文章来源&#xff1a;GreatSQL社区原创 概念介绍 首先需要知道MySQL中触发器特点&#xff0c;以及表table…

掌握这些技巧,让你的Facebook文案更具说服力!

面对广告瀑布流般的竞争&#xff0c;如何让自己的Facebook广告脱颖而出&#xff0c;吸引到用户的眼球&#xff0c;成为广告运营人员必须思考的问题。在这个过程中&#xff0c;文案的作用是至关重要的。 优秀的文案不仅可以吸引用户点击&#xff0c;还能让用户产生共鸣&#xf…

K8s scheduler 调度:预选和优选策略

1 环境准备 kube-scheduler是k8s的核心组件之一&#xff0c;主要负责Pod的调度。scheduler通过监听kube-apiserver&#xff0c;查询未分配 Node的Pod&#xff0c;根据配置的调度策略&#xff0c;将Pod调度到最优的工作节点上&#xff0c;从而高效、合理地利用k8s集群资源。 在m…

shell之数组

一. 关于数组的命令 1. 定义数组 数组名(value0 value1 value2 …) arr(元素1 元素2 元素3 ...) echo ${arr[]}数组名([0]value [1]value [2]value…" arr ([下标1]值1 [下标2]值2 ....) echo ${array3[]}列表名"value0 value1 value2 list"值1 值2 值3 ..…