
C++
XLRed
静默如初,安之若素
展开
-
一个很不错的博客
https://www.cnblogs.com/yulianggo/原创 2020-07-16 15:26:26 · 273 阅读 · 0 评论 -
C++学习总结21--运行时的类型信息
小记:静默如初,安之若素运行时的类型信息1. typeid操作符#include <typeinfo>typeid(类型/对象);注:返回typeinfo对象,用于描述类型信息,其中包含一个name的成员函数,可以将类型信息转换为字符串形式。typeinfo提供了对”==“和”!=“操作符重载的支持,通过它们可以直接进行类型之间的比较。 1 #include <...原创 2019-12-29 21:58:32 · 371 阅读 · 0 评论 -
C++学习总结20--多态(Polymorphic)
小记:静默如初,安之若素多态虚函数覆盖(函数重写),多态概念如果将基类中的某个成员函数声明为虚函数,那么其子类中与该函数具有相同原型的成员函数也是虚函数,并且对基类中的版本形成覆盖。这时,通过指向子类对象的基类指针,或者通过引用子类对象的基类引用去调用虚函数,实际被执行的将是子类中的覆盖版本,而不再是基类中的原始版本,这种语法现象被称为多态。class A{public: vi...原创 2019-12-29 21:11:19 · 762 阅读 · 0 评论 -
C++学习总结 19 -- 继承
小记:静默如初,安之若素继承(Inheritance)1. 继承的概念//了解通过一种机制来表达类型之间共性和特征的方式,利用已有的数据类型定义型的数据烈性,这种机制就是继承。eg: 人类:姓名,年龄,吃饭,睡觉 学生类:姓名,年龄,吃饭,睡觉,学号,学习 教师类:姓名,年龄,吃饭,睡觉,工资,授课 ---------------------------------- 人类:姓名...原创 2019-12-25 00:28:38 · 333 阅读 · 0 评论 -
C++学习总结18--操作符重载
小记:静默如初,安之若素操作符重载1. 双目操作符重载 L#R1.1 运算类的双目操作符: + ,- ,…(需要保持语义一致和逻辑一致)–>左右操作数既可以是左值也可以是右值;–>表达式结果是右值–>两种实现方式:1)成员函数形式L#R的表达式可以被编译器翻译成L.operator#®这样成员函数调用形式,该函数的返回结果就是表达式的结果。(L表示左操作对象,R表...原创 2019-12-22 23:27:15 · 344 阅读 · 0 评论 -
C++学习总结17--成员指针
小记:静默如初,安之若素//了解1. 成员变量指针定义类型 * 指针变量 = &变量;(普通指针)类型 类名::* 指针变量 = &类名::变量;(成员变量指针)使用对象.*成员指针变量名; 注:”.*“称为成员指针解引用操作符对象指针->*成员指针变量名; 注:”->*“成为间接成员指针解引用操作符 1 #include <i...原创 2019-12-21 22:27:52 · 314 阅读 · 0 评论 -
C++学习总结16--静态成员(static)和单例模式
小记:静默如初,安之若素1.静态成员1. 静态成员变量1)语法:class 类名{ static 数据类型 变量名;//声明};数据类型 类名::变量名 = 初值;//定义,求一个对象大小和静态成员变量无关2)语法规则:(静态成员变量和普通成员变量的区别)2.1) 普通的成员变量属于对象,而静态成员变量不属于对象(从内存角度进行分析);2.2)静态成员变量不能在构造函数...原创 2019-12-21 21:07:49 · 535 阅读 · 0 评论 -
C++学习总结15 -- 拷贝构造和拷贝赋值
小记:静默如初,安之若素1. 拷贝构造1. 浅拷贝和深拷贝1)定义:如果一个类中包含指针形式的成员变量,用缺省的拷贝构造函数只是复制指针变量本身,而没有复制指针所指向的内容,这种拷贝方式成为浅拷贝。2)浅拷贝将会导致不同对象间的数据共享,同时会在析构函数中引发”double free“异常,因此就必须自己定义一个支持复制指针内容的拷贝构造函数,即深拷贝. 2 using namespa...原创 2019-12-21 14:36:43 · 230 阅读 · 0 评论 -
C++学习总结14--析构函数
小记:静默如初,安之若素析构函数(Destructor)1. 语法class 类名{ ~类名(void){} //负责清理对象创建时的动态资源};1)函数名必须是”~类名“;2)没有返回类型,也没有参数,也无法重载;2. 当对象销毁时,该类的析构函数会自动的被执行1)栈对象当离开其作用域时,其析构函数被作用域终止的右花括号”}“调用;2)堆对象的析构函数被delete操作符...原创 2019-12-20 23:24:42 · 242 阅读 · 0 评论 -
C++学习总结 13 --this指针和常成员函数
小记:静默如初,安之若素1. this指针1. 定义类中的函数都隐藏一个该类类型的指针参数,名为this。==》对于普通的成员函数,this指向调用该函数的对象==》对于构造函数,this指向正在创建的对象eg: class A { public: A(int i):m_i(i){} void print(void) { cout <&...原创 2019-12-18 23:43:56 · 321 阅读 · 0 评论 -
C++学习总结12--构造函数和成员初始化表
小记:静默处之,安之若素1 构造函数1. 构造函数和普通函数类似,也可以重载或带有缺省参数。 1 #include <iostream> 2 using namespace std; 3 4 class Student 5 { 6 public: 7 Student(const string& name, int age = 0, int ...原创 2019-12-17 00:12:34 · 310 阅读 · 0 评论 -
C++学习总结11--类和对象,类的定义和实例化
小记:静默如初,安之若素1. 类和对象1. 什么是对象万物皆对象,任何一种事物都可以看做是对象。2. 如何描述对象通过对象的属性(名词,数量词,形容词)和行为(动词)来描述对象。 eg:描述冰箱对象 属性:品牌,容量,颜色,功耗 行为:装东西,冷冻,冷藏3. 面向对象的程序设计对自然世界中对象的描述引入到编程实践的方法,这种方法称为“数据抽象”,即在描...原创 2019-12-15 23:30:57 · 1049 阅读 · 0 评论 -
C++学习总结10--类型转换
小记:静默如初,安之若素类型转换1. 隐式类型转换eg: char c = 'a'; int i = c;//隐式转换(char->int->=) void func(int i){...} func(c); int foo(void) { char c = 'a'; return c; }2. 显示转换2.1 C++兼容C的...原创 2019-12-15 17:42:41 · 212 阅读 · 0 评论 -
C++学习总结9--C++的引用(Reference)
小记:静默如初,安之若素C++的引用(Reference)定义1)引用就是某个变量的别名,对引用的操作与变量操作完全相同。2)语法类型 & 引用名 = 变量名;注:引用定义时必须初始化,初始化后绑定的变量不能再做修改;注:引用的类型与初始化时绑定的变量类型一致;eg: int a = 123; int &b = a;//b就是a的引用(别名),对引用初始化...原创 2019-12-15 13:55:19 · 392 阅读 · 0 评论 -
C++学习总结8--动态内存分配
小记:静默如初,安之若素1.动态内存分配笔试题:C中malloc() / free() 和C++中new / delete 的区别(堆区中的内存)C中的动态内存分配1)分配: malloc()2)释放:free()3)错误处理:返回值C++中使用操作符动态分配内存(new的底层实现是malloc, delete 底层实现是free)1)分配:new, new[]2)释放:del...原创 2019-12-14 21:31:34 · 290 阅读 · 0 评论 -
C++学习总结7--函数
小记:静默如初,安之若素1.函数重载定义 在相同的作用域,定义同名的函数,但是它们的参数要有所区分,这样的多个函数构成重载关系。 注:函数的重载和返回值无关eg: 图像库(包含很多绘图函数)//C语言实现(C语言不能有同名函数) void drawCircle(int x, int y, double r){...} void drawRect(int x, int y, do...原创 2019-12-14 17:42:37 · 649 阅读 · 0 评论 -
C++学习总结6--布尔类型(bool),操作符别名
1.C++中的布尔类型bool类型是c++中基本的数据类型,专门表示逻辑值bool在内存上占一个字节,1表示逻辑真,0表示逻辑假bool类型的变量可以接受任何表达式的结果,如果值为非0则表示true(1),如果为0则表示false(0).(实质是检查内存是否为空,空为0,非空为1) 1 #include <iostream> 2 3 using namespa...原创 2019-12-14 13:35:10 · 551 阅读 · 0 评论 -
C++学习总结5--字符串
1. 回顾c中的字符串双引号常量字符串:“hello”字符指针 : char *字符数组: char[ ] 1 #include <stdio.h> 2 #include <string.h> 3 4 int main(void) 5 { 6 //char *p = "hello world"; 7 //strcpy(p, ...原创 2019-12-14 00:32:11 · 196 阅读 · 0 评论 -
C++学习总结4--结构体,联合体,枚举
1.C++的结构体定义结构体变量可以省略struct关键字eg: c: struct Student{...} struct Student s; typedef struct Student STU; STU s2; ---------------------- c++: struct Student{...} Student s;在C++结构体中可以直接定义函数...原创 2019-12-13 23:31:58 · 262 阅读 · 0 评论 -
C++学习总结3--名字空间(namespace)
小记:静默如初,安之若素名字空间(namespace)名字空间作用1) 避免名字冲突2) 划分逻辑单元2 定义名字空间namespace 名字空间{ 名字空间成员1; 名字空间成员2; ... 名字空间成员n;}//注:名字空间成员可以是全局变量,函数,类型,名字空间(嵌套)eg: namespace ns1{ int num = 100; ...原创 2019-12-13 00:36:27 · 300 阅读 · 0 评论 -
C++学习总结2--第一个C++程序
小记:静默如初,安之若素1.第一个C++程序程序命名:first.cpp#include <iostream>int main(int argc, char *argv){ std::cout<<"Hello World!"<<std::endl; return 0;}编译方法3. gcc first.cpp -lstdc++ (...原创 2019-12-12 00:56:52 · 232 阅读 · 0 评论 -
C++学习总结1--C++语言概述
小记:静默如初,安之若素!!!C++语言概述1.江湖地位java, C, C++, python, C#2. C++之父:Bjarne Stroustrup1979,Cpre,为C语言增加类的机制;1983,发布全新编程语言C with class ,后命名C++1985,CFont1.0(编译器),《The C++ Programming Language》3.C++发展过程...原创 2019-12-12 00:30:23 · 325 阅读 · 0 评论