C++ 1、逗号表达式是将括号中所有表达式的值算出来,但是只使用最后一个表达式的值。 2、构造函数是可以私有化的,但一般不会这样做,因为私有化的构造函数不能被new到,并且类不能通过该私有构造函数初始化(可以调用静态方法初始化)。 3、一个类中可以有任意个构造函数(可以函数重载),但只能有一个 ...
effective C++(1)
01.C++总体来说包含四大部分内容,分别是:C语言部分(没有模板、异常、重载等概念);面向对象部分(类、封装、继承、多态、虚函数等);泛型编程部分(模板技术);STL(容器、算法、迭代器等)。 02.对单纯常量,尽量以const对象或enums代替#define,因为宏定义是预处理器干的活, ...
四年的青春,我们的故事还在继续
今天学会了插入图片,让我来试一波吧,哈哈哈哈哈…… 初次约会,多多关照 一起吃火锅 一起看灯展 一起去海滩 一起去海滩+1 一起去海滩+2 毕业了… 一起逛北京
C++对象模型(5) -- 对象构造语义学
一、继承体系下的对象构造步骤及虚函数调用class A{public: A() { printf("A this = %p\n", this); cout << "A::A()" << endl; } ...
C++对象模型(4) -- 函数语义学
一、普通成员函数调用方式class MYACLS{public: int m_i; void myfunc(int abc) { m_i += abc; }};//编译器视角void _ZN6MYACLS6myfuncEi(MYACLS *const thi ...
STL源码剖析(4)
写在前面的话 前一篇博文介绍了序列式容器,接下来介绍关联式容器。 概览 所谓关联式容器,即每个元素都有一个键值(key)和一个实值(value)。当元素被插入到关联式容器中时,容器的内部结构便按照其键值大小,以某种特定规则将这个元素放置于适当位置。关联式容器没有头尾(只有最大元素和最小元素),所 ...
C++对象模型(3) -- 数据语义学
一、数据成员绑定时机typedef string mytype;//定义一个类class A{public: void myfunc(mytype tmpvalue) //mytype = string { m_value = tmpvalue; //出错,是把一个string ...
C++对象模型(2) -- 虚函数
一、虚函数表指针位置分析 一个类若有虚函数,这个类就会产生一个虚函数表。当类创建对象的时候,对象内就会维护一个虚函数表指针,该指针(vptr)会指向这个虚函数表的开始地址。接下来借助代码分析一下虚函数表指针的位置。 class A{public: int i; //4字节 virtual ...
C++对象模型(1) -- 对象
一、类对象所占用的空间 (1)一个空类所占用空间是一个字节,如果有成员变量,就是成员变量占用的内存。为什么空类还要占一个字节的内存?这是因为创建了一个对象就要占用一个字节的地址,就像买房子一样,空房子也是占面积的。 (2)类的成员函数不占用类对象的内存空间,而成员变量占用对象的内存空间。 (3 ...
STL源码剖析(3)
写在前面的话 前一篇博文介绍了迭代器,接下来介绍一下STL的大部头–容器。这一篇首先介绍序列式容器。 容器概览与分类 STL的容器是将运用最广的一些数据结构实现出来。众所周知,常用的数据结构不外乎 array, list, tree, stack, queue, hash table, set, ...