C++ primer 11学习
祁连山牧羊人
这个作者很懒,什么都没留下…
展开
-
dynamic_cast用法总结
dynamic_cast是C++ RTTI技术之一,那么它的应用场景是什么呢?我觉得学习一个东西得先明白它的应用场景,有了应用场景才明白为什么需要它。dynamic_cast应用场景C++是具有多态性的语言,有时候我们会面临这样的情况:手头只有一个基类类型的指针,但我们却希望用它来获取一些派生类中的相关信息,比如调用派生类的成员函数或者访问派生类的成员变量等,那么此时我们就需要用到dynamic_cast。它能够进行指针(或引用)安全的类型向下转换(downcasting,即从基类类型的指针转换为派生类原创 2020-05-24 09:35:04 · 1903 阅读 · 0 评论 -
C++编程准则学习记录
1、视C++为一个语言联邦,包含C语言、object-oriented C、泛型编程、STL四种次语言。编程准则的需要根据我们具体使用哪种次语言而定。2、尽量让#define多休假。也就是可以利用const或enum来代替#define定义的常量。用模板inline函数代替类似函数的#define宏。#define定义的常量没有private属性。对于类专属的常量,通常定义为static con...原创 2020-01-06 23:09:37 · 118 阅读 · 0 评论 -
右值引用,移动构造,移动赋值
1、目的右值引用,移动构造和移动赋值是在C++11中引入的,其目的是为了提升代码效率2、使用场景类中如果有需要申请动态资源的成员,那么定义移动构造函数和移动赋值运算符可以避免不必要的拷贝工作,从而提升代码效率。移动构造和移动赋值并不会新开辟资源,而是将源对象的一部分或全部资源移交给了新对象。std::move()的作用是将一个左值转换为右值,但它并没有进行真正的内存移动操作。3、代码举例...原创 2019-10-17 23:34:54 · 193 阅读 · 0 评论 -
constexpr和常量表达式
constexpr和常量表达式常量表达式常量表达式是指不会改变且在编译过程中就能计算出来的表达式。字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象或表达式是不是常量表达是由它的数据类型和初始值共同决定。例:const int a = 10;//常量表达式const int b = a + 5;//常量表达式int c = 3;//不是常量表达式con...原创 2019-08-19 23:17:00 · 100 阅读 · 0 评论 -
C++异常检查学习记录
C++异常检查学习记录1、标准异常头文件2、代码实践C++异常检查throw (expression)抛出某种类型的异常, try catch语句捕获并处理异常。throw(expression)try{ }catch(){ }1、标准异常头文件expection头文件,定义最通用的异常类expection。它只报告异常的发生,不提供额外的信息。stde...原创 2019-08-11 11:00:18 · 626 阅读 · 0 评论 -
C++类的隐式类型转换和explicit关键字
C++类的隐式类型转换和explicit关键字文章目录C++类的隐式类型转换和explicit关键字C++类的隐式类型转换explicit关键字C++类的隐式类型转换当我们为一个C++ class定义单参数的构造函数时,该构造函数实际上也同时定义了隐式的类型转换,即将参数类型转换为所定义的class类型,这个隐式的转换函数称为转换构造函数。如下,定义一个Person.h中定义一个Person...原创 2019-08-17 19:27:24 · 198 阅读 · 0 评论 -
C++ 顶层const和底层const
顶层const和底层const当我们定义指针和变量的时候,有时候希望定义成const型,就是不希望程序中改变自己定义的变量,一旦有代码试图改变定义好的const型的变量,在编译的时候就会直接报错。指针本身也是一个变量对象,指针所指的变量也是一个变量对象。当定义const int *p = &i的时候是指针不可变还是变量i不可变呢?这就涉及大了顶层const和底层const的概念。如下的...原创 2019-08-18 10:46:01 · 132 阅读 · 0 评论 -
shared_ptr简单应用
shared_ptr 是C++共享指针,往往应用在动态分配内存的场景下。相较于new操作符的优势在于shared_ptr共享指针可以自动进行动态内存释放,而new必须与delete配合使用,否则会造成内存泄露。shared_ptr还可以作为class的成员,以使该class的对象能够共享数据。下面的代码进行了一下简单的实践。#include <iostream>#include ...原创 2019-09-01 09:53:26 · 332 阅读 · 0 评论