cpp
文章平均质量分 69
mardax
这个作者很懒,什么都没留下…
展开
-
cpp——namespace
namespace原创 2016-11-17 12:54:56 · 377 阅读 · 0 评论 -
cpp——链接指示
extern如果现在有一个c静态库和相应的头文件,内含函数void eat(int, int),在c静态库中用汇编代码表示为:_sub_eat_: //... //... ret如果c++链接器去link这个函数的时候,按照c++处理函数的规则,去link子过程_sub_eat_int_int_,显然找不到,报link原创 2016-11-02 07:31:44 · 431 阅读 · 0 评论 -
cpp——exception
exception原创 2016-10-28 08:48:58 · 280 阅读 · 0 评论 -
cpp——与c比较之不同——函数 static const
c++与c比较之不同(二)原创 2016-10-26 16:45:40 · 542 阅读 · 0 评论 -
cpp——复合类型——引用
引用引用本质为const指针,引用基础类型为指针指向的目标类型,只是表现的像非指针,以此来降低指针使用复杂度,因此引用必须初始化引用的指针属性void ref_pointer(){ int i1 = 5; int i2 = 8; int* pi = &i1; int& ri = i1; cout << "&i1 = " << &i1 << ", &i2 = " << &i2 << endl; cout << "----原创 2017-03-01 08:03:34 · 570 阅读 · 0 评论 -
cpp——复合类型——函数——匿名形参 默认实参
匿名形参c++允许形参匿名,匿名形参主要用来占位,待以后完善,因为形参匿名,因此函数体中无法访问void feed(int, int){ cout << "feed(int, int)" << endl;}void call_feed(){ //feed(); //feed(5); feed(5, 8);}默认实参默认实参本质就是在函数调用时,从函数声明(引用性声明和定义性声明)中获取默认实参值代替当前函数调用中相应位置实参的缺失,显然编译期代替可为原创 2017-03-01 09:13:51 · 763 阅读 · 0 评论 -
cpp——复合类型——函数——函数重载
cpp——复合类型——函数——函数重载原创 2017-03-06 16:05:45 · 468 阅读 · 0 评论 -
cpp——与c之不同——函数
cpp——与c之不同——static const原创 2017-03-13 20:43:34 · 393 阅读 · 0 评论 -
cpp——隐式转换——类类型
概述#pragma pack(4)class CAnimal{public: char name[3]; short age; int color; char gender;};class CDog : public CAnimal{public: int hurt;};void mem_offset(){ CAnima原创 2017-03-11 14:48:26 · 527 阅读 · 0 评论 -
cpp——显式类型转换
显式转换,又称强制转换显式转换尽可能少用,如果程序使用了大量显式转换,本身就是程序设计有问题,显式转换是告诉程序读者和编译器,此处存在安全隐患static_cast,静态转换class B{};class D : public B{};int main(){ int i; double d; i = static_cast(d);原创 2017-03-11 14:51:17 · 340 阅读 · 0 评论 -
cpp——与c之不同——指针
void*cvoid void_pointer(){ int i = 5; void* pv = &i; int* pi = pv; printf("sizeof(void) = %ld\n", sizeof(void)); printf("pv = %p, pi = %p, *pi = %d\n", pv, pi, *pi); pv++; printf("pv = %p\n", pv); pv += 5原创 2017-03-13 20:40:50 · 583 阅读 · 0 评论 -
cpp——类——虚继承——构造函数 析构函数 赋值操作符函数
cpp——类——虚继承——构造函数 析构函数 赋值操作符函数原创 2017-05-26 20:56:15 · 285 阅读 · 0 评论 -
cpp——类——虚继承——作用域 名字查找
cpp——类——虚继承——作用域 名字查找原创 2017-05-26 20:57:27 · 231 阅读 · 0 评论 -
cpp——类——RTTI
cpp——类——内存布局原创 2017-05-27 10:48:57 · 321 阅读 · 0 评论 -
cpp——类——声明 定义 实现
概述类是c++引入的核心数据类型,类是对数据和方法的封装,地位上与内置类型(复合类型)相同,只是一种自定义数据类型声明类的声明,又称类的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道class具体细节,是不完全类型类的声明只能用于指针(引用)类型,因为指针(引用)类型字长固定,编译器知道分配多少内存空间,如何操作指针(引用)类型类的声明不能用于实例对象,因为对于实例对象,编译器需要知道class具体细节以便确定分配多少内存空间,如何操作实例对象c原创 2017-02-10 15:56:13 · 7847 阅读 · 2 评论 -
cpp——类——构造函数
概述为了类的使用方便,类的设计尽可能使类的使用方式与内置类型无区别,构造函数则是类模仿内置类型的初始化内置类型初始化支持直接初始化,复制初始化,默认初始化,构造函数对应于内置类型的各种初始化:带参数构造函数——直接初始化复制构造函数——复制初始化默认构造函数——默认初始化构造函数特点:函数名与类名同名,用来标记和识别构造函数没有返回值,构造函数是对自身的初始化,返回值无意义,因为没有返回值的接收者初始化行为,构造函数在生成(定义)对象时自动调用,因此构造函数只能执行一次,否则就多次初始化原创 2017-02-13 15:48:14 · 3351 阅读 · 0 评论 -
cpp——类——析构函数
概述析构函数特点:函数名为“~类名”,用来标记和识别析构函数没有返回值,析构函数是对自身的销毁行为,返回值无意义,因为没有返回值的接收者形参列表为空,所以析构函数没有重载,唯一的构造函数VS析构函数:构造函数是对自身的初始化,生成(定义)对象时自动调用析构函数是对自身的销毁,销毁对象时自动调用辅助类class CAnimal{public: CAnimal() : mGroup(0) { cout << "CAnimal()" << endl;原创 2017-02-13 15:49:16 · 2804 阅读 · 0 评论 -
cpp——类——赋值操作符函数
概述赋值操作符函数模仿内置类型的赋值操作赋值操作符函数只是赋值操作符重载的一个特殊版本,其形参列表为[const] classname &,当实例对象赋值操作时调用辅助类class CAnimal{public: CAnimal() : mGroup(0) { cout << "CAnimal()" << endl; } CAnimal(int group) : mGroup(group) { cout <<原创 2017-02-13 15:49:40 · 1345 阅读 · 0 评论 -
cpp——类——内存布局
cpp——类——内存布局原创 2017-05-27 16:28:20 · 500 阅读 · 0 评论 -
cpp——类——explicit构造函数
概述explicit只能修饰构造函数,构造函数默认implicit,implicit不是keywordimplicit构造函数:可用于直接初始化,也可用于复制初始化explicit构造函数:可用于直接初始化,不可用于复制初始化implicitclass CAnimal{public: CAnimal(int group) : mGroup(group) { cout << "CAnimal(" << group << ")" << endl; }原创 2017-02-20 17:37:29 · 523 阅读 · 0 评论 -
cpp——类——作用域 名字查找
概述在类外部看来,类类型跟非类类型,类类型对象跟非类类型对象在使用上无区别,类类型如内置类型一般使用,类类型对象如内置类型对象一般使用,但在类内部则存在复杂作用域,这就是类作用域,类作用域对类外部是透明的对象名字查找class CAnimal{public: CAnimal() : mGroup(1) {} public: int mGroup; public: void init() { cout << "CAnimal::init()" << e原创 2017-02-28 00:06:50 · 540 阅读 · 0 评论 -
cpp——类——嵌套类型 嵌套类 局部类型 局部类
嵌套类型嵌套类型,nested type,定义于外围类(outer class)作用域内的类型class CAnimal{private: //Group mGroup; private: //EFood food;private: typedef int Group; protected: enum EFood { RICE = 0, MEAT = 1, FISH = 2,原创 2017-02-28 15:26:48 · 904 阅读 · 0 评论 -
cpp——类——成员指针
概述this为const指针对象,指向当前实例对象,因此this的本质就是实例对象,non-static数据成员和non-static函数成员跟this相关联,而static数据成员和static函数成员跟this无关联,因此non-static数据成员和non-static函数成员属于实例对象成员,而static数据成员和static函数成员则不属于实例对象成员同一类作用域内的所有成员(non-static数据成员,non-static函数成员,static数据成员,static函数成员)本质位于同原创 2017-02-28 15:33:20 · 811 阅读 · 0 评论 -
cpp——与c之不同——struct union
structcstruct是不同数据类型的聚集体,通过相对于struct首地址的offset获取struct成员,struct每个成员保存了相对于struct首地址的offset和自身字长c++struct等同于class,除了默认成员访问权限和默认继承方式不同class默认成员访问权限为private,默认继承方式为privatestruct默认成员访问权限为public,默认继承方式为publicclass CAnimal{ int food1; public:原创 2017-03-13 20:42:52 · 395 阅读 · 0 评论 -
cpp——与c之不同——static const
staticcstatic在c中是一个多义词,可修饰全局对象和局部对象修饰全局对象:对应中文为"内部的",修饰对象作用域修饰局部对象:对应中文为"静态的",修饰对象存储方式(生命周期)static全局对象static int g_static_food = 5; //static全局数据对象定义static void feed(int rice, int meat); //static全局函数对象声明static void feed(int rice, int meat) { p原创 2017-03-13 20:56:11 · 485 阅读 · 0 评论 -
cpp——与c之不同——初始化
初始化c支持复制初始化,不支持直接初始化void init(){ int i1 = 5; //int i2(8);}c++支持复制初始化,支持直接初始化引入直接初始化主要为了支持类的初始化(构造函数),c++为了保持类型统一性,对非类类型也支持直接初始化对于非类类型,直接初始化和复制初始化无区别对于类类型,直接初始化可使用implicit构造函数,也可使用explicit构造函数,复制初始化可使用implicit构造函数,不可使用explicit构造函数,且复制初始原创 2017-03-13 21:05:48 · 324 阅读 · 0 评论 -
cpp——类——virtual成员函数
VTBLnon-static成员函数分两类:non-virtual成员函数virtual成员函数如果类包含virtual成员函数,就会生成虚函数表,即VTBL(virtual table),VTBL包含类的virtual成员函数入口地址:包含VTBL的类,其第一个字段为vptr指针,指向类的VTBL,因此VTBL被所有类实例对象共享子类VTBL继承父类VTBL,子类可增加VTBL项(增加virtual成员函数),更新VTBL项(override virtual成员函数),override vi原创 2017-02-28 15:27:53 · 1514 阅读 · 0 评论 -
cpp——类——多重继承——构造函数 析构函数 赋值操作符函数
多重继承多重继承指子类包含多个直接父类直接父类继承自不同父类class CDAnimal{public: CDAnimal() : mGroup(0) { cout << "CDAnimal()" << endl; } CDAnimal(int group) : mGroup(group) { cout << "CDAnimal(" << group << ")" << endl; }原创 2017-05-08 15:33:05 · 453 阅读 · 0 评论 -
cpp——类——多重继承——作用域 名字查找
多重继承对象名字查找直接父类继承自不同父类class CDAnimal{public: CDAnimal() : mGroup(1) {} public: int mGroup; public: void init() { cout << "CDAnimal::init()" << endl; } public: static int totalGroup; public: static int getTotalGr原创 2017-05-08 15:33:36 · 462 阅读 · 0 评论 -
cpp——复合类型——函数——运算符重载
cpp——复合类型——函数——运算符重载原创 2017-03-06 16:06:46 · 530 阅读 · 0 评论 -
cpp——类——VBTBL
cpp——类——RTTI原创 2017-05-27 10:48:20 · 312 阅读 · 0 评论 -
cpp——类——VTBL
VTBLVTBL,virtual table,即虚函数表,如果类包含virtual成员函数,就会生成VTBL,VTBL包含类的virtual成员函数入口地址,包含VTBL的类,其第一个字段为vptr指针,指向类的VTBL,因此VTBL被所有类实例对象所共享子类会继承父类的VTBL,也会继承父类的vptr指针,并初始化为指向子类VTBL单继承继承父类VTBLclass CAnimal { public: virtual void feed() {原创 2017-05-27 10:47:47 · 605 阅读 · 0 评论