C++程序设计
fanying1115
这个作者很懒,什么都没留下…
展开
-
C++虚基类
需要解决的问题当派生类从多个基类派生,而这些基类又有共同基类,则在访问此共同基类中的成员时,将产生冗余,并有可能因冗余带来不一致性。虚基类声明以virtual说明基类继承方式例:class B1:virtual public B作用①主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题;②为最远的派生类提供唯一的基类成员,而不重复产生多次复制。注意:...原创 2019-11-23 20:04:03 · 202 阅读 · 0 评论 -
C++类的多继承与类的组合
析构函数与构造函数的执行次序构造函数的执行次序:①执行基类的构造函数(按照继承时的次序);②执行对象成员的构造函数(按照定义的先后次序)。析构函数的执行次序:与构造函数的执行次序相反(最先构造的,最后被析构)。#include "pch.h"#include <iostream>using namespace std;class Base1 //基类Base1,构造函...原创 2019-11-23 16:49:53 · 191 阅读 · 0 评论 -
C++保护继承
保护继承(protected)继承的访问控制①基类的public和protected成员:都以protected身份出现在派生类中;②基类的private成员:不可直接访问。访问权限①派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;②通过派生类的对象:不能直接访问从基类继承的任何成员。protected成员的特点...原创 2019-11-17 13:02:32 · 1182 阅读 · 0 评论 -
C++私有继承
私有继承继承的访问控制①基类的public和protected成员:都以private身份出现在派生类中;②基类的private成员:不可直接访问。访问权限①派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;②通过派生类的对象:不能直接访问从基类继承的任何成员。#include "Point.h"#includ...原创 2019-11-17 12:21:57 · 225 阅读 · 0 评论 -
C++公有继承
公有继承(public)继承的访问控制①基类的public和protected成员:访问属性在派生类中保持不变;②基类的private成员:不可直接访问。访问权限①派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类中的private成员;②通过派生类的对象:只能访问public成员。#include "Point.h"#includ...原创 2019-11-17 10:31:12 · 1167 阅读 · 0 评论 -
C++getline用法
用法:getline(cin, s)//从输入流中读取一行赋给s。getline只要一遇到换行符就结束读取操作并返回结果,哪怕输入的一开始就是换行符也是如此。如果输入真的一开始就是换行符,那么所得的结果是个空string。getline(cin, s ,ch)//从输入流中读取内容,赋给s,知道遇到字符ch,返回结果。#include "pch.h"#include <io...原创 2019-11-14 20:15:19 · 7585 阅读 · 0 评论 -
C++移动构造函数
类似拷贝构造函数,移动构造函数的第一个参数是该类类型的一个引用。 不同于拷贝构造函数的是,这个引用参数在移动构造函数中是一个右值引用。除了完成资源移动,移动构造函数还必须确保移后源对象处于这样一个状态——销毁它是无害的。一旦资源完成移动,源对象必须不再指向被移动的资源——这些资源的所有权已经归属新创建的对象。#include "pch.h"#include <iostream>...原创 2019-11-14 19:05:58 · 2243 阅读 · 3 评论 -
C++ vector对象
定义:vector对象的定义vector<元素类型> 数组对象名(数组长度);例 vector arr(10);//建立大小为5的int数组vector对象的使用:对数组元素的引用与普通数组具有相同形式:vector对象名[下标表达式]vector数组对象名不表示数组首地址获得数组长度用size函数vector对象名.size()#include <...原创 2019-11-14 13:42:39 · 211 阅读 · 0 评论 -
C++分配和释放动态数组
分配:new 类型名T[数组长度]数组长度可以是任何整数类型表达式,在运行时计算。释放:delete[] 数组名p释放指针p所指向的数组。p必须是用new分配得到的数组首地址。主程序#include "pch.h"#include "Point.h"int main(){ Point *ptr = new Point[2];//创建对象数组 ptr[0].mov...原创 2019-11-13 19:37:27 · 2479 阅读 · 0 评论 -
C++this指针
this指针隐含于类的每一个非静态成员指出成员函数所操作的对象当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时就隐含的使用了this指针。例如Point类中getX()函数中的语句:return x;相当于:return this->x;...原创 2019-11-11 18:43:18 · 164 阅读 · 0 评论 -
C++对象指针
对象指针定义形式:类名 *对象指针名;通过指针访问对象成员:对象指针名->成员名#include "pch.h"#include <iostream>using namespace std;class Point{public: Point(int x = 0, int y = 0) :x(x), y(y) {}; ~Point() {}; int...原创 2019-11-11 17:07:29 · 204 阅读 · 0 评论 -
C++函数指针
函数指针的定义定义形式存储类型 数据类型 (函数指针名)()含义函数指针指向的是函数代码存储区函数指针的典型用途——实现函数回调通过函数指针调用函数例如将函数指针作为参数传递给一个函数,使得在处理相似事件的时候可以灵活的使用不同的方法调用者不关心谁是被调用者需知道存在一个具有特定原型和限制条件的被调用函数。#include "pch.h"#include <io...原创 2019-11-11 16:25:10 · 93 阅读 · 0 评论 -
C++static静态变量
1、static 变量在静态区,不管是局部静态还是全局静态,其生命周期与程序相同。从作用域和生命周期考虑问题分析。在内存分区的全局数据区分配内存,用时可以改变其值。2、static静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;始终驻留在全局数据区,直到程序运行结束。但其作用域为局...转载 2019-11-07 20:59:40 · 3010 阅读 · 0 评论 -
C++基于范围的for循环
基于范围的for循环可以简化对数组元素道的遍历。for(Type VarName : Array){ //数组中每个元素的值会依次赋给VarName}#include "pch.h"#include "Point.h"int main(){ int array[5] = { 1, 2, 3, 4, 5 }; for (int &x : array) { cout...原创 2019-11-09 20:25:44 · 147 阅读 · 0 评论 -
C++对象数组
对象数组的定义和访问定义对象数组类名 数组名[元素个数];访问对象数组元素通过下标访问:数组名[下标].成员名//Point.h头文件#pragma once#include <iostream>using namespace std;class Point{public: Point(); Point(int, int); ~Point(); vo...原创 2019-11-09 19:48:01 · 270 阅读 · 0 评论 -
C++常成员函数
使用常成员函数用来处理常对象。常对象只能调用常成员函数;普通对象可调用全部成员函数。若在下面的例子中,没有定义void print()函数,则con1.print()调用的是void print() const函数。#include "pch.h"#include <iostream>using namespace std;class C{public: C...原创 2019-11-09 16:29:53 · 298 阅读 · 0 评论 -
C++友元函数
// static.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;class Point{public: Point(int x = 0, int y = 0):x(x),y(y) { count++; } Point...原创 2019-11-08 09:29:59 · 264 阅读 · 0 评论 -
C++类的组合实例
主程序#include "pch.h"#include "Line.h"/*//函数声明void fun1(Point p);Point fun2();*/int main(){ Point myp1(1, 1), myp2(4, 5); //建立Point类的对象 Line line(myp1, myp2); //建立Line类的对象 cout ...原创 2019-11-04 16:53:13 · 1902 阅读 · 1 评论 -
C++拷贝构造函数
拷贝构造函数的第一个参数必须是引用类型。原因是如果参数是非应用类型,则调用永远不会成功——为了调用拷贝构造函数,我们必须拷贝它的实参,为了拷贝实参,我们必须调用拷贝构造函数,如此无限循环。拷贝初始化不仅在我们用=定义变量时会发生,在下列情况下也会发生:1.将一个对象作为实参传递给一个非引用类型的形参。2.从一个返回类型为非引用类型的函数返回一个对象。3.用花括号列表初始化一个素组中的元素或...原创 2019-11-04 14:19:09 · 161 阅读 · 0 评论 -
C++委托构造函数实例
C++委托构造函数的实例#include<iostream>using namespace std;class Date{ public: //非委托构造函数使用对应的实参初始化成员 Date(int year,int month,int day):_year(year), _month(month), _day(day)...原创 2019-11-03 19:08:38 · 325 阅读 · 0 评论