
c++面向对象
总结来自于慕课北京大学郭炜老师
過去※
这个作者很懒,什么都没留下…
展开
-
运算符重载———赋值运算符的重载
目的:有时候希望赋值运算符两边的类型可以不匹配,比如,把一个int类型变量赋值给一个Complex对象,或把一个 char * 类型的字符串赋值给一个字符串对象,此时就需要重载赋值运算符“=”。注意:赋值运算符“=”只能重载为成员函数赋值运算符重载实例示例:#include <iostream>#include <string.h>using namespace std; class String { private: char * str; public:原创 2020-05-11 11:18:26 · 477 阅读 · 0 评论 -
运算符重载———运算符重载的基本概念
引入运算符重载的目的:由于C++预定义的运算符,只能用于基本数据类型的运算:整型、实型、字符型、逻辑型,导致对象无法通过运算符进行运算。故引入了运算符重载。运算符重载:1:运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。2:运算符重载的目的是:扩展C++中提供的运算符的适用范围,使之能作用于对象。3:运算符重载的实质是函数重载,可以重载为普通函数,也可以重载为成员函数4:把含运算符的表达式转换成对运算符函数的调用。原创 2020-05-11 09:40:09 · 7542 阅读 · 0 评论 -
面向对象提高———友元
友元函数:1:一个类的友元函数可以访问该类的私有成员.#include <iostream>using namespace std;class CCar ; //提前声明 CCar类,以便后面的CDriver类使用class CDriver{ public: void ModifyCar( CCar * pCar) ; //改装汽车};class CCar{ private: int price; public: CCar(int p):pric原创 2020-05-10 22:34:36 · 209 阅读 · 0 评论 -
面向对象提高———常量成员函数
常量对象:如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加 const关键字。示例:class Sample { private : int value; public: Sample() { } void SetValue() { }};const Sample Obj; // 常量对象Obj.SetValue (); //错误 。常量对象只能使用构造函数、析构函数和 有const 说明的函数(常量方法)注意:常量对象只能使用构造函数、析构函数和 有co原创 2020-05-10 21:35:44 · 551 阅读 · 0 评论 -
面向对象提高———成员对象和封闭类
封闭类:有成员对象的类叫 封闭(enclosing)类。示例:#include <iostream>using namespace std;class CTyre //轮胎类{ public: int radius; //半径 int width; //宽度 public: CTyre(int r,int w):radius(r),width(w) { }};class CEngine //引擎类{};class CCar { //汽车类 这是原创 2020-05-10 19:59:26 · 139 阅读 · 0 评论 -
类和对象的提高———静态成员
静态成员:1:在定义前面加了static关键字的成员。2:普通成员变量每个对象有各自的一份,而静态成员变量一共就一份,为所有对象共享。3:sizeof 运算符不会计算静态成员变量。4:普通成员函数必须具体作用于某个对象,而静态成员函数并不具体作用于某个对象。5:因此静态成员不需要通过对象就能访问。6:在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数。定义静态成员:class CRectangle{ private: int w, h; static int原创 2020-05-10 17:19:02 · 199 阅读 · 0 评论 -
类和对象提高———this指针
this指针的作用:其作用就是指向成员函数所作用的对象1:非静态成员函数中可以直接使用this来代表指向该函数作用的对象的指针class Complex { public: double real, imag; void Print() { cout << real << "," << imag ; } Complex(double r,double i):real(r),imag(i) { } Complex AddOne(原创 2020-05-10 16:35:27 · 117 阅读 · 0 评论 -
类和对象基础———类型转换构造函数、析构函数
类型转换函数基本概念:1:定义转换构造函数的目的是实现类型的自动转换。2:只有一个参数,而且不是复制构造函数的构造函数, 一般就可以看作是转换构造函数。3:当需要的时候,编译系统会自动调用转换构造函数, 建立一个无名的临时对象(或临时变量)。具体实例:class Complex { public: double real, imag; Complex( int i) {...原创 2020-05-03 16:47:08 · 430 阅读 · 0 评论 -
类和对象基础———复制构造函数
复制构造函数基本概念:1:只有一个参数,即对同类对象的引用。 形如 X::X( X& )或X::X(const X &), 二者选一后者能以常量对象作为参数:2:如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。例:如果没有定义构造函数:class Complex { private : double real,ima...原创 2020-05-03 13:34:36 · 991 阅读 · 0 评论 -
类和对象基础———构造函数
构造函数基本概念:成员函数的一种1:名字与类名相同,可以有参数,不能有返回值(void也不行)。2:作用是对对象进行初始化,如给成员变量赋初值。3:如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。(默认构造函数无参数,不做任何操作)4:如果定义了构造函数,则编译器不生成默认的无参数的构造函数。5:对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造...原创 2020-05-02 23:58:28 · 339 阅读 · 0 评论 -
从c到c++———类和对象基本概念(二)
类成员的可访问范围:private: 私有成员,只能由该类中的函数、其友元函数访问,该类的对象也不能访问.protected: 保护成员,可以被该类中的函数、子类的函数、但不能被该类的对象访问public: 公有成员,可以被该类中的函数、子类的函数、也可以由该类的对象访问用法:class className { private: 私有属性和函数 public: 公有...原创 2020-05-02 21:00:31 · 122 阅读 · 0 评论 -
从c到c++———类和对象基本概念(一)
面向对象的程序设计方法:第一步:将某类客观事物共同特点(属性)归纳出来,形成一个数据结构(可以用多个变量描述事物的属性);将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构(==这一步叫“抽象==”)。第二步:然后,通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在一起,形成一个“类”,从而使得数据结构和操作该数据结构的算法呈现出显而易见的紧密关...原创 2020-05-01 23:50:15 · 185 阅读 · 0 评论 -
从c到c++———内联函数、函数重载、函数缺省参数
内联函数:概述:*函数调用是有时间开销的 。如果函数本身只有几条语句,执行非常快,而且函数被反复执行很多次,相比之下调用函数所产生的这个开销就会显得比较大。为了减少函数调用的开销,引入了内联函数机制。编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。。用法:inline关键字在函数定义前面“加”inline“”关键字inline int M...原创 2020-05-01 23:06:22 · 135 阅读 · 0 评论 -
从c到c++———动态内存分配(new与delete)
new关键字用法:1:分配一个变量。 P = new T;T是任意类型名,P是类型为T * 的指针。动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P例:`int * pn;pn = new int; * pn = 5;2:分配一个数组。P = new T[N]; T为任意类型名, ...原创 2020-05-01 22:29:53 · 158 阅读 · 0 评论 -
从c到c++———const关键字
const关键字用法1:定义常量const int MAX_VAL = 23;const string SCHOOL_NAME = "Peking University";//定义一个字符串常量2:定义常量指针不可通过常量指针修改其指向的内容例:int n,m;const int * p = & n;* p = 5; //编译出错,不可通过常量指针修改其指向的内容n ...原创 2020-04-27 20:38:00 · 134 阅读 · 0 评论 -
从c到c++———引用与常引用
引用的概念:下面的写法定义了一个引用,并将其初始化为引用某个变量。类型名 & 引用名 = 某变量名;int n = 4; int & r = n; // r引用了 n, r的类型是 int &某个变量的引用,等价于这个变量,相当于该变量的一个别名。例:int n = 4;int & r = n;r = 4; cout << r; /...原创 2020-04-01 16:08:57 · 315 阅读 · 0 评论