随笔分类 - c++笔记
友元
摘要:实例: 输出结果: 为什么会有友元函数? 结合着类的特性和类中一般成员函数,我们可以这样理解:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有 成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该
阅读全文
简单库函数
摘要:memset函数使用方法 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。 需要的头文件 在C中 <string.h> 在C++中 <cstring> 更详细的解说见百度百科 --
阅读全文
c++基础:之封装
摘要:原创: 零灵柒 C/C++的编程教室 2月4日 什么是类 C++是什么?C++设计之初就是class with c,所以简单点说,C++就是带类的C,那么什么是类? 类,简单点说就是类型,在C++中我们一开始所接触的类型有如下几种: //+ char, short, int, long, long
阅读全文
makefile
摘要:最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似
阅读全文
C语言中,头文件和源文件的关系(转)
摘要:简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中
阅读全文
c++四种强制类型转化
摘要:c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast C++ 类型转换(C风格的强制转换): (1)将浮点型数据赋值给整型变量时,舍弃其小数部分。 (2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。 (3)将
阅读全文
c++中的构造(包括移动),赋值(包括移动),析构详解
摘要:这五种操作:构造(包括移动),赋值(包括移动),析构其实就是定义了对一个对象进行构造,赋值,析构时的行为。理解这些行为并不复杂,复杂的是理解在继承下这些行为的表现。需要注意的是他们并不会被继承(传统意义上的继承)。 拷贝构造函数 形式: class Foo{ public: Foo(); //默认构
阅读全文
关于继承中的析构函数
摘要:测试代码1: 在vs2003运行结果如下 ClassA::ClassA() beginClassA::Print()ClassA::ClassA() endClassB::ClassB() beginClassB::Print()ClassB::ClassB() end ClassB::Print(
阅读全文
c++智能指针详解
摘要:动态内存 每个程序有一个内存池,称为堆,用于存储动态分配的对象,即那些在程序运行时分配的对象。动态对象的生存周期由程序来控制,也就是说,当动态对象不再使用时,我们的代码必须显示的销毁他们。 使用懂态内存是十分必要的额,但众所周知,正确管理动态内存是十分棘手的。比如忘记释放内存就会产生内存泄漏。有时尚
阅读全文
c++explicit
摘要:首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 那么显示声明的构造函数和隐式声明的有什么区别呢? 我们
阅读全文
c++模板特化偏特化
摘要:模板为什么要特化,因为编译器认为,对于特定的类型,如果你对某一功能有更好地实现,那么就该听你的。 模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是模板如果有多个类型,那么就只限定为其中的 一部分,其实特化细分为范围上的偏特化与个数上的偏特化。 模板的泛
阅读全文
为什么size_t重要?
摘要:参见 http://en.cppreference.com/w/cpp/types/size_t size_t其实与uintptr_t一个道理。就是一个东西。指针其实就是寻址,与地址总线位数一致,编译器根据平台决定,从性能和可移植性分析有其由来。 之前在《内存拷贝的注意事项》一文中提到过size_t
阅读全文
qt用mingw编译时报错 multiple definition of
摘要:1 2 3 首先,检查自己的程序是否真的有重定义、头文件循环包含等问题。 若确定没有,则是由于方法的实现放在了头文件中,将这些方法的实现转移到对应的cpp文件中。 移动后编译,可能仍然会报错。(╯‵□′)╯︵┻━┻ 这是因为在debug目录下的*.o文件时上次编译时生成的旧文件,需要将这些.o文件全
阅读全文
inline详解
摘要:1. 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序
阅读全文
C++静态数据成员与静态成员函数
摘要:一般情况下,如果有n个同类的对象,那么每一个对象都分别有自己的数据成员,不同对象的数据成员各自有值,互不相干。但是有时人们希望有某一个或几个数据成员为所有对象所共有,这样可以实现数据共享。可以使用全局变量来达到共享数据的目的。例如在一个程序文件中有多个函数,每一个函数都可以改变全局变量的值,全局变量
阅读全文
c++虚函数实现机制(转)
摘要:前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚
阅读全文