![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++面向对象
刘哩子不会写代码
这个作者很懒,什么都没留下…
展开
-
C++面向对象的编程-习题11(数组的初始化及使用+特殊符号的重载)
1·题目介绍2·参考程序#include<iostream>using namespace std;class Repeat{private: int a[3];public: Repeat(){} Repeat(int *p) { int i; for (i = 0; i < 3; i++) { a[i] = p[i]; } } Repeat operator^(Repeat& t) { int b[3]; int i,原创 2021-06-14 09:40:15 · 142 阅读 · 0 评论 -
C++面向对象的编程-习题10(继承习题)
1·题目介绍2·我的回答#include<iostream>#include<cmath>using namespace std;class Point{protected: int x1; int y1;public: Point(int a, int b) { x1 = a; y1 = b; }};class Line:public Point {protected: int x2; int y2;public: Line(in原创 2021-06-13 09:28:52 · 642 阅读 · 1 评论 -
虚函数和多态性
多态性是面向对象程序设计的重要特征之一。所谓的多态性指的是一个名字可以具有多个语义。前面介绍的函数重载、类模板和函数模板都属于多态性,用户只需要发送一般形式的消息,而将所有的实现留给所接受消息的对象,对象根据所接收到的消息,而做出相应的动作(即操作)。本章介绍的虚函数,就是C++实现多态性的另一个重要机制。·1·函数绑定函数绑定就是函数的入口地址同函数调用相联系的的过程。函数调用指令由操作码和地址码两部分构成,地址码就是被调用函数的入口地址,绑定就是要计算机被调用函数的入口地址,并将该地址存放在函数调原创 2021-06-10 17:30:59 · 824 阅读 · 0 评论 -
C++面向对象的编程-练习9(数组指针强制转换)
1·题目介绍2·参考程序#include<iostream>#include<cstring> using namespace std;class String_Integer{private: char* s;public: String_Integer(char* str) { s = new char[strlen(str) + 1]; strcpy(s, str); } operator int() { int num = 0;原创 2021-06-10 16:29:45 · 239 阅读 · 1 评论 -
C++面向对象的编程-练习8(对象数组+数组旋转符号的重载)
1·题目介绍2·我的回答#include<iostream>#define M 3using namespace std;class Array{private: int b[M][M];public: Array(int(*p)[M] = 0) { int i, j; for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { b[i][j] = p[i][j]; } }原创 2021-06-08 20:04:00 · 163 阅读 · 1 评论 -
C++面向对象的编程-练习7(继承+字符数组的定义+指针+虚函数)
1·题目介绍2·我的回答#include<iostream>using namespace std;class Base{protected: char name[8]; int num;public: Base() { cin >> name; } void print() { cout << "姓名为:" << name << endl; cout << "分数为:" << nu原创 2021-06-07 22:48:26 · 122 阅读 · 0 评论 -
C++面向对象的编程-练习6(继承+指针+虚函数)
1·问题2·我的回答#include<iostream>#include<cmath>using namespace std;class RECT{private: double x; double y;public: RECT(double x1, double y1) { x = x1; y = y1; } virtual double area() { return x * y; } double peri() { retu原创 2021-06-07 22:09:34 · 96 阅读 · 0 评论 -
C++/ ++的前后缀重载
++的前后重载#include<iostream>using namespace std;class chong{private: int a;public: chong(int x = 0) { a = x; } chong operator++(int) { chong temp(a); a++; return temp; } chong operator++() { ++a; return *this; } int geta()原创 2021-05-16 17:50:59 · 234 阅读 · 0 评论 -
C++面向对象的编程-练习5(person类继承/2019年期中考试)
【题目】1. 设计如下类CPerson实现对人的封装,包括私有数据成员:身份证号ID、姓名Name和年龄Age。定义含三个参数的构造函数、拷贝构造函数;定义函数set(),提示键盘输入ID、Name和Age,以修改身份证号、姓名和年龄;定义输出函数display()。#include<iostream>using namespace std;class CPerson{private: int ID; string Name; int age;public: CPerson(原创 2021-05-16 10:49:19 · 708 阅读 · 2 评论 -
C++面向对象的编程-练习4(学籍继承类)
【题目】编写一个学生1和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩、教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类#include<iostream>using namespace std;class Person{private: int ID; string Name;public: Person(int i = 0, string na = " ")原创 2021-05-16 10:46:18 · 221 阅读 · 0 评论 -
C++小知识点
(1)在C++中,函数的参数有三种传递方式,它们是值传递、地址传递和引用传递(2)一个成员函数被调用时,该成员函数的this指针指向调用它的对象。原创 2021-05-09 16:51:20 · 56 阅读 · 0 评论 -
C++继承的简单认识
C++继承的简单认识面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用变得更加容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,你不需要重新编写新的数据成员和成员函数,只需要指定新建的类继承继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a的关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。代码如下://基类class animal{ //eat()函数原创 2021-05-02 11:01:40 · 173 阅读 · 1 评论 -
C++重载类型转换运算符的简单认识
C++重载类型转换运算符的简单认识c++中提供了标准类型的相互转换,如执行语句:n=(int)1.87;则n=1,同样,可以进行这种类型转化运算符。这种重载运算符函数的格式如下:operator 类型名(){ 函数体;}与以前的重载运算符不同的是,类型转换运算符重载函数没有返回类型,因为“类型名”就代表了它的返回类型,而且也没有任何参数。在调用过程中要带一个对象实参。实际上,类型转换运算符将对象转换成类型规定的类型。转换时的形式就像强制转换一样。如果没有转换运算符定义,直接用强制转换类原创 2021-04-24 16:26:49 · 320 阅读 · 0 评论 -
C++面向对象的编程-练习3(学生成绩设置与输出,静态数据成员的运用)
声明一个Student类,在该类中包括一个数据成员:score(代表课程成绩)、两个静态数据成员:total_score(代表总分),count(代表学生总人数)。成员函数有:构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。·#include<ios原创 2021-04-22 19:56:59 · 3190 阅读 · 0 评论 -
C++的一些小问答1
C++的一些小问答1(1)析构函数和构造函数的主要作用是什么?他们各自有什么特性?构造函数是一种特殊的成员函数,他主要用于为对象分配空间,进行初始化。构造函数的名字必须和类名相同,而不能由用户任意命名。它可以有任意类型的参数,但不能具有返回值类型。析构函数通常用于执行一些清理任务,如释放分配给对象的内存空间等。析构函数与类名相同,但他前面必须有一个波浪号。不能有返回值也不能有参数。(2)什么是this指针?他的主要作用是什么?c++为成员函数提供了一个名字为this的指针,这个指针称为自引用指针转载 2021-04-20 20:10:25 · 89 阅读 · 0 评论 -
类成员指针的简单认识
对类成员的简单认识··在c++中,除了可以定义对象外,还可以定义成员指针。类成员指针包括类数据成员指针和类成员函数指针。·类成员成员指针类数据成员指针的定义格式如下:类型 类名::指针名由于类不是在运行存在的对象,因此在使用类成员数据成员指针时,需要首先指定一个数据成员,然后通过类的对象来引用指针所指向的成员。·分析如下程序结果#include<iostream>using namespace std;int s = 0;class my{public: void原创 2021-04-20 19:54:08 · 564 阅读 · 0 评论 -
C++面向对象的编程-练习2(--与==的重载)
在复数类Complex内部实现运算符–和==#include<iostream>using namespace std;class Complex{ int x,y;public: Complex(int x1=0,int y1=0) { x=x1; y=y1; } Complex operator--(int)//后缀-- { x--; y--; return Complex(x+1,y+1); } Complex operator--()//原创 2021-04-19 20:57:25 · 93 阅读 · 0 评论 -
C++中对new与delete的简单理解
C++中对new与delete的简单理解我们可以知道,指针与数组具有相似性,但两者之间是有区别的,数组在定义时就根据指定的大小分配好了内存空间,而指针只是一个变量。那么如何给指针分配一片内存空间呢?下面我们将介绍的new运算符可以实现这一功能,他与delete运算符一起使用,以达到直接进行动态内存分配和释放的目的。··运算符new返回指定类型的一个指针,如果分配失败(如没有足够的空间),则返回0.例如:double *p;p=new double;系统自动根据double类型的空间大小开辟原创 2021-04-19 20:51:45 · 209 阅读 · 0 评论 -
C++静态成员的简单认识
静态成员包括静态数据成员和静态成员函数。提出静态成员的目的是为了解决数据共享的问题。··静态数据成员··静态数据成员是类中所有对象共享的成员,而不是某个对象的成员,也就是说静态数据成员的储存空间不是放在每个对象中的,而是和成员函数一样放在类公共区中。所以有时候静态数据成员又被称为类变量。··对静态数据成员的操作和一般数据成员一样,定义为私有的静态数据成员不能由外界访问。静态数据成员可由任意访问权限许可的函数访问。可以在类的成员中改变静态数据成员。··因为静态数据成员不从属于任何一个具体对象,所以原创 2021-04-19 20:24:28 · 273 阅读 · 0 评论 -
析构函数的简单认识
什么析构函数?析构函数和构造函数一样,析构函数也是类的特殊成员函数,不用调用便自动执行,而且析构函数的名字也是与类的名字有关。·在前面我们可以知道,c++程序设计的一个原则是,由系统自动分批的内存空间由系统自动释放,而手工分配的内存空间必须手动释放,否则可能会造成内存的泄露。·我们先看如下问题实例:#include<iostream>#include<cstring>using namespace std;class my{ int n; char* p;p原创 2021-04-19 19:47:25 · 611 阅读 · 0 评论 -
C++面向对象的编程-练习1(location类的友元函数)
题目如下·····设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1, y1), B(x2, y2)Distance1=d1Distance2=d2·解答如下:#include<iostream>#include<cmath>using namespace std;class Lo原创 2021-04-17 09:54:09 · 791 阅读 · 0 评论 -
C++重载运算符和重载函数的简单认识
C++重载运算符和重载函数的简单认识C++允许在同一作用域中的某个函数和运算符指定多个定义,分别成为函数重载和运行算符重载。重载声明是指与之前已经在该作用域内声明过的函数或方法具有相同的名称的声明,但是他们的参数列表和定义(实现)不相同。当你...转载 2021-04-15 12:40:59 · 111 阅读 · 0 评论 -
友元函数的简单认识
友元函数的简单认识类的友元函数是定义在类的外部,但是有权访问类的所有私有(private)成员和保护(protect)成员。尽管友元函数的原型在类的定义中出现过,但是友元函数不是成员函数。友元函数是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个友元,需要在类的定义中该函数原型使用关键字friend,如图所示class box{ double width; public: double length;转载 2021-04-10 12:05:47 · 325 阅读 · 1 评论 -
C++中的拷贝构造函数的简单认识
C++中的拷贝构造函数的简单认识拷贝构造函数是一种特殊的构造函数,他在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象复制对象把它作为参数传递给函数复制对象,并从函数返回这个对象如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并由动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下classname(const class &job){}在这里,job转载 2021-04-10 11:42:05 · 196 阅读 · 0 评论 -
C++中的静态变量的简单认识
C++中的静态变量的简单认识我们可以使用static关键字来把类成员定义为静态的。当我们声明类成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中都是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有静态数据都会被初始化为。我们1不能把静态成员的初始化放在类的定义里面,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对他进行初始化。int student::count=1; 静态函数的初始化#incl转载 2021-04-05 11:16:17 · 136 阅读 · 0 评论