c++
文章平均质量分 54
xutian_curry
这个作者很懒,什么都没留下…
展开
-
c++ 引用
引用定义:类型名 & 引用名 = 某变量名int n = 4;int &r = n;某个变量的引用,等价于这个变量,相当于该变量的一个别名注意:1.定义引用时一定要将其初始化成引用某个变量。2.初始化后,它就一直引用该变量,不会再引用别的变量3.引用只能引用变量,不能引用常量和表达式应用交换两个变量void swap( int & a, int & b){in...原创 2018-05-05 20:22:08 · 182 阅读 · 0 评论 -
程序设计MOOC 奇怪的类复制
#include <iostream>using namespace std;class Sample{public: int v; Sample( const int vv = 0 ) { v = vv; } Sample( const Sample & a ) { v = a.v + 2...原创 2018-05-27 20:24:59 · 336 阅读 · 0 评论 -
多态性与虚函数
12.1多态性的概念多态性是面向对象程序设计的一个重要特征。多态性:向不同的对象发送同一消息,不同的对象在接受时会产生不同的行为。例如函数的重载和运算符重载都是多态现象。在c++中,多态性的表现形式之一是:具有不同功能的函数可以用同一函数名,这样就可以实现一个用一个函数名调用不同内容的函数。从系统实现的角度来看,多态性分为两类:静态多态性和动态多态性。静态多态性:通过函数重载完成,由函数重载和运算...原创 2018-05-28 15:09:45 · 246 阅读 · 0 评论 -
c++ 类的继承与派生 随便写的练习
#include <iostream>using namespace std;const double pi = 3.14;class Point{protected: double x,y;public: Point( double xx = 0, double yy = 0 ): x(xx), y(yy) {} void SetPoint( do...原创 2018-05-28 16:13:06 · 388 阅读 · 0 评论 -
利用虚函数实现动态多态性
12.3.1 虚函数的作用能否用同一个调用形式来调用派生类和基类的同名函数。在程序中,不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们。c++中的虚函数就是用来解决动态多态问题的。所谓虚函数,就是在基类声明函数是虚拟的,并不是实际存在的函数,然后在派生类中才正式定义此函数。下面给出一个例子#include <iostream>#include <stri...原创 2018-05-28 17:48:09 · 6567 阅读 · 0 评论 -
leetcode 买卖股票的最佳时机Ⅱ
因为可以进行多次买卖,这是一个贪心问题,只要当天股票价格比前一天股票价格上涨,便卖出#include <vector>using namespace std;class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); ...原创 2018-05-24 10:11:18 · 191 阅读 · 1 评论 -
静态关联和动态关联
3.2静态关联与动态关联关联:确定调用的具体对象的过程。(指把一个函数名和一个类对象捆绑在一起,建立关联)。静态关联:在编译时即可确定其调用的虚函数属于哪一个类,例如函数重载和通过对象名调用的虚函数。由于是在运行前进行关联的,又称为早期关联。动态关联:编译系统把他放在运行阶段进行处理,在运行阶段确定关联关系。也叫滞后关联。3.3 在什么情况下应当声明虚函数使用虚函数的注意:1)只能用virtual...原创 2018-05-30 15:29:48 · 4699 阅读 · 0 评论 -
纯虚函数和抽象类
4.1纯虚函数使用背景:有时在基类中将某一成员函数定为虚函数,并不是基类本身的要求,而是考虑到派生类的需要,在基类中预留一个函数名,具体功能留给派生类根据需要去定义。声明纯虚函数:virtual 函数类型 函数名(参数列表)=0;注意:1)纯虚函数没有函数体2)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”3)声明语句,最后面应该有分号。纯虚函数的功能:1...原创 2018-05-30 16:43:28 · 702 阅读 · 0 评论 -
this指针
它是指向本类对象的指针,他的值是当前被调用的成员函数所在的对象的起始地址。所谓“调用对象a的成员函数f”,实际上是在调用成员函数f时使this指针指向对象a,从而访问对象a的成员。...原创 2018-05-30 16:59:05 · 134 阅读 · 0 评论 -
公用数据成员的保护
6.1常对象定义常对象的一般形式为:类名 const 对象名 [(实参表)];在定义常对象前,必须同时对之初始化,之后不能再改变。说明:1)如果一个对象声明为常对象,则通过该函数只能调用它的常成员函数,而不能调用该对象的普通成员函数(除了构造函数和析构函数)。2)常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中的数据成员的值。3)常对象只保证其数据成员是常数据成员,其值不被改变。不保...原创 2018-06-01 17:48:51 · 473 阅读 · 0 评论 -
程序设计MOOC 学生信息处理程序
#include <iostream>#include <string>#include <cstdio>#include <cstring>#include <sstream>#include <cstdlib>using namespace std;class Student{private: ...原创 2018-05-27 19:58:16 · 516 阅读 · 1 评论 -
程序设计MOOC 神秘的数组初始化
#include <iostream>using namespace std;int main(){ int * a[] = { NULL, NULL, new int[1], new int[6] }; *a[2] = 123; a[3][5] = 456; if(! a[0] ) { ...原创 2018-05-27 19:40:25 · 617 阅读 · 0 评论 -
重载运算符 程序设计实习MOOC 全面的MyString
#include <cstdlib>#include <iostream>using namespace std;int strlen(const char * s){ int i = 0; for(; s[i]; ++i); return i;}void strcpy(char * d,const char * s){ int...原创 2018-05-27 19:26:45 · 933 阅读 · 0 评论 -
const关键字
const关键字用法1.定义常量const int MAX_VAL = 100;2.定义常量指针int m = 5;const int * p = &m;*p = 4;//错误注意:1.不可通过常量指针修改其指向的内容2.不能把常量指针赋值给非常量指针,反过来可以。除非强制类型转换3.函数参数为常量指针时,可避免函数内部不小心改变参数指针所指的地方的内容void Myprint(con...原创 2018-05-05 20:34:30 · 92 阅读 · 0 评论 -
动态内存分配
利用new运算符实现动态内存分配用法1. 分配一个变量p = new t;t是任意类型名,p是类型为 t* 的指针。动态分配出一片大小为 sizeof(t) 字节的内存空间,并且将该内存空间的起始地址赋值给p。2.分配一个数组p = new t[n];t : 任意类型名p : 类型为 t* 的指针n : 要分配的数组元素的个数,可以是整型表达式动态分配出一片大小为N * sizeof(t) 的内存...原创 2018-05-05 20:57:25 · 136 阅读 · 0 评论 -
内联函数 和 重载函数 和 缺省函数
内联函数目的:函数调用是有时间开销的(参数入栈、函数地址入栈)。如果函数本身只有几条语句,执行非常快·,而且函数会被反复执行很多次,相比之下,调用函数的开销会显得特别大。机理:引入了内联函数机制,编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句中,而不会产生调用函数的语句。内联函数的定义:在函数定义前加"inline"关键字inline int Max( int a, int b...原创 2018-05-20 19:32:45 · 188 阅读 · 0 评论 -
类和对象的基本概念
结构化程序数据结构 + 算法不足之处:1. 结构化程序设计中,函数和其所操作的数据结构没有直观的联系。2.随着程序规模的增加,程序逐渐难以理解,很难一下子看出来。例如:①某个数据结构到底有哪些函数可以对它进行操作。②某个函数到底用来操作哪些数据结构的。③任何两个函数之间存在怎样的调用关系?面向对象的程序设计类 + 类 +类面向对象的程序设计方法:1.将某类客观事物共同特点(属性)归纳出来,形成一个...原创 2018-05-20 21:14:55 · 581 阅读 · 0 评论 -
类的继承与派生(一)
继承性是面向对象设计的最重要特征,实现了软件的可重用性。1.继承与派生的概念在c++中,所谓继承就是在一个已存在的类的基础上建立一个新的类。已存在的类称为基类或父类,新建立的类称为派生类或者子类。一个新类从已有的类那里获得其已有的特性,这种现象称为类的继承。从已有的类产生一个新类,称为类的派生。继承的分类:1.一个派生类只从一个基类派生,称为单继承。2.一个派生类有两个或者多个基类的称为多重继承。...原创 2018-05-27 11:44:03 · 2793 阅读 · 0 评论 -
类的继承与派生(二)
4.派生类成员的访问属性讨论访问属性时,一般考虑以下几种情况1.基类成员函数访问基类成员。(ok)2.派生类的成员函数访问派生类自己增加的成员。(ok)3.基类的成员函数访问派生类的成员(no)4.派生类的成员函数访问基类的成员5.派生类外访问派生类的成员(根据公有成员或者私有成员来定)6.在派生类外访问基类成员不同的继承方式决定了基类成员在派生类中的访问属性(1)公用继承基类的公有成员和保护成员...原创 2018-05-27 12:04:11 · 302 阅读 · 0 评论 -
类和对象的基本概念二
1.类的成员函数的函数体和类的定义分开来写。写法:函数类型 类名::函数名{函数体}表明后面的函数是类的成员函数而非普通函数。那么,一定要通过对象或对象的指针或对象的引用才能调用。2.类成员的可访问范围范围访问关键字:①private:私有成员,只能在成员函数内访问。②public:公有成员,可以在任何地方访问。③protected:保护成员(如果某个成员前面没有关键字,则缺省地被认为是私有成员...原创 2018-05-22 19:45:09 · 151 阅读 · 0 评论 -
构造函数
成员函数的一种①名字与类名相同,可以有参数,不能有返回值(void也不行)②作用是对对象进行初始化,如给成员变量赋值。③如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。默认构造函数为参数,不做任何操作。如果定义了构造函数,则编译器不生成默认的无参数的构造函数。对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数一个类可以有多个构造函数。参数个数和参数类型不同 ...原创 2018-05-22 20:38:06 · 124 阅读 · 0 评论 -
派生类的构造函数和析构函数
前言:在设计派生类的构造函数时,希望执行派生类的构造函数时,使派生类的数据成员和基类的数据成员同时被初始化。解决这个问题的思路是:在执行派生类的构造函数时,调用基类的构造函数。5.1简单的派生类的构造函数派生类构造函数一般形式为派生类构造函数名(总参数表):基类构造函数名(参数表){派生类中新增数据成员初始化语句}总参数表包括基类构造函数所需的参数和对派生类新增的数据成员初始化所需的参数。注意:派...原创 2018-05-27 16:57:54 · 1430 阅读 · 0 评论 -
运算符重载
10.2 运算符重载的方法运算符重载的方法是定义一个重载运算符的函数,使指定的运算符不仅能实现原有的功能,而且能实现在函数中指定的新功能。运算符重载实际上是函数的重载。重载运算符的函数一般格式如下:函数类型 operator 运算符名称 ( 形参表 ){对运算符的重载处理;}例子中实现了一个简单的复数相加。#include <iostream>using namespace st...原创 2018-06-01 22:03:18 · 227 阅读 · 0 评论