![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++基础
何人搵英雄泪
学生
展开
-
覆盖、保护成员、派生类的构造函数、public继承的赋值兼容规则、直接基类与间接基类
覆盖、保护成员、派生类的构造函数覆盖派生类可以定义一个和基类成员同名的成员,这就叫覆盖。在派生类中访问这类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。//基类和派生类有同名成员的情况:class base{ int j;public: int i; void func();};class derived:public base{public: int i; void access();原创 2021-08-26 10:35:48 · 331 阅读 · 0 评论 -
继承和派生
继承和派生继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个基类的派生类(也称为子类)。派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。派生类一经定义后,可以独立使用,不依赖于基类。派生类拥有基类的全部成员变量和成员函数,不论是practice、protected、public。派生类的各个成员函数中,不能访问基类的private成员。派生类的写法:class 派生类名:publi原创 2021-08-21 19:40:03 · 146 阅读 · 0 评论 -
流插入运算符与流提取运算符重载,类型转换运算符的重载,自增、自减运算符的重载
流插入运算符与流提取运算符,类型转换运算符的重载,自增、自减运算符的重载流插入运算符的重载cout是在iostream头文件中定义的,ostream类的对象。“<<”可以用在cout上使用是因为在iostream中对“<<”进行了重载。/*如果下面程序输出为5hello,该如何补写class CStudent{public: int nAge;};int main(){ CStudent s; s.nAge = 5; cout原创 2021-08-20 21:19:46 · 408 阅读 · 0 评论 -
可变长数组类的实现
可变长数组类的实现class CArray{ int size; //数组元素的个数 int *ptr; //指向动态分配的数组public: CArray(int s = 0); //s代表数组元素的个数 CArray(CArray &a); ~CArray(); void push_back(int v); //用于数组尾部添加一个元素v CArray &operator=(const CArray &a)原创 2021-07-23 17:59:59 · 214 阅读 · 0 评论 -
浅拷贝与深拷贝
浅拷贝与深拷贝class String {private: char *str;public: String():str(new char[1]) { str[0] = 0; } const char *c_str() { return str; } String &operator=(const char *s) { delete []str; str =原创 2021-07-23 14:28:55 · 55 阅读 · 0 评论 -
运算符重载
运算符重载运算符重载就是对已有的运算符(c++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。运算符重载的实质就是函数重载。可以重载为普通函数,也可以重载为成员函数。把含运算符的表达式转换为对运算符函数的调用。把运算符的操作数转换成运算符函数的参数。运算符被多次重载时,根据实参的类型决定调用哪个运算符函数。运算符重载的形式/*返回值类型 operator运算符(形参表){ ....}*///运算符重载实例class Complex原创 2021-07-23 10:14:56 · 110 阅读 · 0 评论 -
友元的简单介绍
友元友元分为友元函数和友元类两种。友元函数一个类的友元函数可以访问该类的私有成员。class CCar; //提前声明CCar类,以便后面的CDriver类使用class CDriver{public: void ModifyCar(CCar *pCar); //改装汽车};class CCar{ friend int MostExpensiveCar(CCar cars[], int total); //友元声明 feiend void CDriver:原创 2021-07-22 19:34:25 · 518 阅读 · 0 评论 -
常量对象、常量成员函数和常引用
常量对象、常量成员函数和常引用常量对象如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加const关键字。class CEngine //引擎类{};const CEngine obj; //常量对象常量成员函数1、在类成员函数说明后面可以加上const关键字,则该成员函数成为常量成员函数。2、常量成员函数执行期间不应该修改其所作用的对象。因此,在常量成员函数中不能修改成员函数的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)。class Sa原创 2021-07-22 17:00:52 · 161 阅读 · 0 评论 -
成员对象和封闭类
成员对象和封闭类有成员对象的类叫封闭类class CTyre //轮胎类{private: int radius; //半径 int width; //宽度public: CTyre(int r, int w):radius(r), width(w) {}};class CEngine //引擎类{};class CCar //汽车类,封闭类{private: int price; //价格 CTyre ty原创 2021-07-22 15:43:55 · 80 阅读 · 0 评论 -
静态成员变量和静态成员函数
静态成员变量和静态成员函数静态成员:在定义前加了static关键字的成员。class CRectangle{private: int w, h; static int nTotalArea; //静态成员变量 static int nTotalNumble;public: CRectangle(int w_, int h_); ~CRectangle(); static void PrintTotal(); //静态成员函数};//普通成原创 2021-07-22 11:42:29 · 82 阅读 · 0 评论 -
this指针
this指针c++程序到c程序的翻译//c++程序:class CCar{public: int price; void SetPrice(int p);};void CCar::SetPrice(int p){ price = p;}int main(){ CCar car; car.SetPrice(20000); return 0;}/*------------------------------*///转换成c程序:原创 2021-07-22 10:07:31 · 55 阅读 · 0 评论 -
类和对象的基本概念
类和对象的基本概念类和对象从客观事物抽象出类。举例理解类:写一个程序,输入矩形的长和宽,输出面积和周长。//面向过程的方法:#include <iostream>using namespace std;int main(){ double length, width; double area = 0, perimeter = 0; cout << "请输入矩形的长:" << endl; cin >> leng原创 2021-07-21 16:46:27 · 217 阅读 · 0 评论 -
内联函数、函数重载、函数缺省参数
内联函数、函数重载、函数缺省参数内联函数(减少函数调用的开销)编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。(适用于简单的函数)定义内联函数:在函数定义前面加上“inline”关键字,即可定义内联函数inline int Max(int a, int b){ if(a < b) return a; return b;}函数重载函数重载:一个或者多个函数,名字相同,然而参数个数或者参数类型不同。int原创 2021-07-21 13:51:15 · 65 阅读 · 0 评论 -
动态内存分配
动态内存分配用new运算符实现动态内存分配第一种用法,分配一个变量/*P = new T;T是任意类型名,P是类型为T*的指针。动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。*/int *pn;pn = new int; //new int的返回值类型是int **pn = 5;第二种用法,分配一个数组/*P = new T[N];T为任意类型名;P为类型为T*的指针;N为要分配的数组元素的个数,可以是整型表达式。动态分配出一片原创 2021-07-21 13:47:12 · 126 阅读 · 0 评论 -
const关键字
const关键字1、定义常量const int MAX_VAL = 23;const double PI = 3.14;const char *SCHOOL_NAME = "Nanchang University";2、定义常量指针不可以通过常量指针修改其指向的内容int n, m;const int *p = &n;*p = 5; //编译出错n = 4; //正确p = &m; //正确,常量指针的指向可以变化不能把常量指针赋值给非常量指针,反过原创 2021-07-21 13:34:15 · 49 阅读 · 0 评论