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 · 355 阅读 · 0 评论 -
继承和派生
继承和派生 继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个基类的派生类(也称为子类)。 派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。 派生类一经定义后,可以独立使用,不依赖于基类。 派生类拥有基类的全部成员变量和成员函数,不论是practice、protected、public。 派生类的各个成员函数中,不能访问基类的private成员。 派生类的写法: class 派生类名:publi原创 2021-08-21 19:40:03 · 155 阅读 · 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 · 434 阅读 · 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 · 233 阅读 · 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 · 85 阅读 · 0 评论 -
运算符重载
运算符重载 运算符重载就是对已有的运算符(c++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。 运算符重载的实质就是函数重载。 可以重载为普通函数,也可以重载为成员函数。 把含运算符的表达式转换为对运算符函数的调用。 把运算符的操作数转换成运算符函数的参数。 运算符被多次重载时,根据实参的类型决定调用哪个运算符函数。 运算符重载的形式 /* 返回值类型 operator运算符(形参表) { .... } */ //运算符重载实例 class Complex原创 2021-07-23 10:14:56 · 136 阅读 · 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 · 526 阅读 · 0 评论 -
常量对象、常量成员函数和常引用
常量对象、常量成员函数和常引用 常量对象 如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加const关键字。 class CEngine //引擎类 { }; const CEngine obj; //常量对象 常量成员函数 1、在类成员函数说明后面可以加上const关键字,则该成员函数成为常量成员函数。 2、常量成员函数执行期间不应该修改其所作用的对象。因此,在常量成员函数中不能修改成员函数的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)。 class Sa原创 2021-07-22 17:00:52 · 169 阅读 · 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 · 90 阅读 · 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 · 92 阅读 · 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 · 83 阅读 · 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 · 243 阅读 · 0 评论 -
内联函数、函数重载、函数缺省参数
内联函数、函数重载、函数缺省参数 内联函数(减少函数调用的开销) 编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。(适用于简单的函数) 定义内联函数:在函数定义前面加上“inline”关键字,即可定义内联函数 inline int Max(int a, int b) { if(a < b) return a; return b; } 函数重载 函数重载:一个或者多个函数,名字相同,然而参数个数或者参数类型不同。 int原创 2021-07-21 13:51:15 · 92 阅读 · 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 · 154 阅读 · 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 · 59 阅读 · 0 评论