C/C++技术笔记
记录学习和使用C/C++曾经遇到的一些问题,以及关键技术的总结;一来可以加深自己的记忆,二来可以帮助有需要的人。
sampson MrLiang
笨点不要紧,坚持最重要!
展开
-
从C++11开始被弃用的特性
C++11开始给语言本身带来了很多新特性,但同时也弃用了一些就特性;需要注意的是弃用并不等于彻底不用,只是暗示和建议程序员这些特性将从未来的版本中消失,应尽量避免使用。包括但不限于以下特性被弃用:• 不再允许字符串字面值常量赋值给一个 char *。如果需要用字符串字面值常量赋值和初始化一个char *,应该使用 const char * 或者 auto。 cpp ch...原创 2019-11-28 11:21:26 · 665 阅读 · 0 评论 -
C++父子类指针步长问题
C++给我们提供了多态,可以使得同样类型的变量,调用同样的方法,却产生完全不同的行为;但在使用多态时需要指针步长的问题。防止因为步长而出现问题。下面我们通道一个案例说明C++指针步长问题,其实只要稍微留意就可以避免此问题,并不是难点,而是在编码时需要留意即可。#include <iostream>using namespace std;class P...原创 2019-07-02 21:20:44 · 250 阅读 · 0 评论 -
C++多继承的二义性
导言 在派生类中对基类成员访问应该是唯一的,但是在多继承时,可能会导致对基类某成员访问出现不一致的情况,这就是C++多继承中的二义性。出现二义性主要有以下两种情况情况一: 如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的成员变量进行访问时,可能产生二义性,继承关系如下图所示:另外我们可以通道实例证明:#incl...原创 2019-06-30 14:04:11 · 796 阅读 · 0 评论 -
C++运算符重载详解与实例分析(全部经过测试)
1、运算符重载什么是重载? 所谓重载,就是重新赋予新的含义。运算符重载就是赋予运算符新的含义(新功能),其本质是一个函数。为什么要重载运算符?C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型是没办法操作的,此时就需要重载运算符来实现。运算符函数定义的一般格式如下: <返回类型说明符> operat...原创 2019-06-25 14:30:19 · 8252 阅读 · 3 评论 -
C++面向对象模型初步分析
在C语言中“数据(变量)”和处理数据的操作(函数)是分开声明的,即C语言本身并没有提供“数据和函数”之间直接关联的功能。C++中的class从面向对象出发,将变量和函数集中定义在一起,实现了两者之间的绑定。但从计算机的角度分析,程序同样有数据段和代码段构成,那么C++是如何从面向对象理论到计算机化程序之间的转化的?即C++编译器是如何管理类和对象,以及类和对象之间的关系?类和方法之间的调用关...原创 2019-06-16 22:55:16 · 153 阅读 · 0 评论 -
C++静态(static)成员函数和成员变量的使用
静态成员变量和成员函数是指在类中以static修饰的变量和函数。直接看例子熟悉其使用和特性: #include <iostream> using namespace std; class test { public: test() :a(0), b(0) { } ...原创 2019-06-16 16:24:05 · 3830 阅读 · 0 评论 -
C++对C语言哪些功能进行了加强?
概述: C++是在C语言的基础上发展而来,但他们两并不是竞争关系。C++继承了C语言的很多特性,同时也对某些特性进行了加强,以下进行逐一讲解。变量检测更加严格在C语言中重复定义多个同名全局变量,编译器可以正常编译,属于合法行为,最终会被连接到全局数据区的同一个地址上。如:int g_var;int g_var=0;C编译器对以上代码不会报错。而在C++中...原创 2019-06-06 18:27:40 · 400 阅读 · 0 评论 -
拷贝构造函数的4中应用场景
周末闲着没事,写点以前的东西记录一下。 对象的不同使用方式会导致拷贝构造函数在不同时期进行调用,理解拷贝构造函数的调用时机有助于我们认识程序运行机制,帮助我们编写更高效的程序。直接上代码: #include <iostream> using namespace std; class copy { ...原创 2019-06-15 13:37:58 · 510 阅读 · 0 评论 -
C与C++内存分配和释放机制混合使用探讨
我们都知道C利用库函数malloc和free来分配和释放内存,C++提供较为简单而功能强大的运算符new和delete来取代malloc和free;但C++为了兼容C语言,同样保留了malloc和free,只是不建议用户使用而已。那么C++两对内存分配和释放函数(或操作符)是否完成同样的功能?能不能混搭使用?它们之间有什么不同?首先从下面的几个例子开始分析和回答这几个问题...原创 2019-06-16 11:16:59 · 374 阅读 · 0 评论