随笔分类 -  C++

初始化列表(const和引用成员)、拷贝构造函数
摘要:一、构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 构造函数的执行分为两个阶段 初始化段 普通计算段 (一)、对象成员及其初始化 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 阅读全文

posted @ 2018-02-25 22:47 AlanTu 阅读(2813) 评论(0) 推荐(0) 编辑

构造函数、析构函数、赋值与初始化、explicit关键字
摘要:一、构造函数、默认构造函数 (1)、构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构造函数的类型(返回类型),也不能使用void 通常情况下构造函数应声明为公有函数,一般被隐式地调用。 阅读全文

posted @ 2018-02-25 22:44 AlanTu 阅读(799) 评论(0) 推荐(0) 编辑

类声明、类作用域、前向声明、this指针、嵌套类、PIMPL 技法 等
摘要:一、类声明 //类是一种用户自定义类型,声明形式: class 类名称 { public: 公有成员(外部接口) private: 私有成员 protected: 保护成员 }; 在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。 在关键字private后 阅读全文

posted @ 2018-02-25 22:43 AlanTu 阅读(386) 评论(0) 推荐(0) 编辑

引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
摘要:一、引用 (1)、引用是给一个变量起别名 定义引用的一般格式:类型 &引用名 = 变量名; 例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元 注意:定义引用时一定要初始化,指明该引用是谁的别名 在实际应用中,引用一般用作参数传递与返回值 引用不是变量,引用仅仅只是 阅读全文

posted @ 2018-02-25 22:41 AlanTu 阅读(561) 评论(0) 推荐(0) 编辑

const与#define、结构体对齐、函数重载name mangling、new/delete 等
摘要:一、bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节。 声明方式:bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零 阅读全文

posted @ 2018-02-25 22:39 AlanTu 阅读(289) 评论(0) 推荐(0) 编辑

实现一些字符串操作标准库函数、解决一些字符串问题
摘要:一、实现字符串操作标准库函数 (1)、strcpy、strncpy、memmove、memcpy、memset、strlen、strncat 的实现 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 阅读全文

posted @ 2018-02-25 22:36 AlanTu 阅读(658) 评论(0) 推荐(0) 编辑

C++模板类内友元(友元函数,友元类)声明的三种情况
摘要:根据《C++ Primer》第三版16.4节的叙述,C++类模板友元分为以下几种情况 1.非模板友元类或友元函数。 书上给了一个例子: class Foo{ void bar(); }; template <class T> class QueueItem{ friend class foobar; 阅读全文

posted @ 2018-02-25 22:31 AlanTu 阅读(3667) 评论(0) 推荐(0) 编辑

字符编解码的故事(ASCII,GBK,Unicode,Utf-8区别)
摘要:很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出更多的状态,状态开始变来变去。他们看到这样是好的,于是它们就这机 阅读全文

posted @ 2018-02-25 22:30 AlanTu 阅读(345) 评论(0) 推荐(0) 编辑

C++中四种类型转换以及const_cast是否能改变常量的问题
摘要:we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. Their format is to follow the new type enclosed be 阅读全文

posted @ 2018-02-25 22:28 AlanTu 阅读(3268) 评论(0) 推荐(1) 编辑

C++的引用与const指针的关系以及各种传递方式
摘要:首先我们知道 const int *p 与 int const *p 是一样的,即 *p 是常量;而 int * const p 跟上面是不一样的,即 p 是常量;我们知道引用只是一个别名,与变量共享存储空间,并且必须在定义的时候初始化,而且不能再成为别的变量的别名,这让我们想到什么呢,貌似跟 in 阅读全文

posted @ 2018-02-25 22:18 AlanTu 阅读(870) 评论(0) 推荐(0) 编辑

比较显式调用构造函数和析构函数
摘要:1.首先看如下的代码,显式调用析构函数: C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include <iostream> using namespace std 阅读全文

posted @ 2018-02-25 22:09 AlanTu 阅读(616) 评论(0) 推荐(0) 编辑

Linux下C结构体初始化
摘要:1、前言 今天在公司看一同事写的代码,代码中用到了struct,初始化一个struct用的是乱序格式,如下代码所示: typedef struct _data_t { int a; int b; }data_t; data_t data = { .a = 10, .b = 20, }; 通常初始化一 阅读全文

posted @ 2018-02-24 15:14 AlanTu 阅读(4892) 评论(0) 推荐(0) 编辑

__attribute__中constructor和destructor
摘要:1、前言 最近看到一份代码,看到一个函数前面用__attribute__((destructor))修饰,当时感觉有点怪怪的,搜了整个程序,也没发现哪个地方调用这个函数。于是从字面意思猜想,该函数会在程序结束后自动调用,与C++中的析构函数类似。第一次接触GNU下的attribute,总结一下。 2 阅读全文

posted @ 2018-02-24 15:12 AlanTu 阅读(11862) 评论(0) 推荐(0) 编辑

C语言指针转换为intptr_t类型
摘要:1、前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量。由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针。感觉很奇怪,为何要将一个指针这样做呢?如是果断上网查查,发现我的感觉是错误的,所以,任何事情不能凭感觉,要弄清楚来龙去脉。先总结 阅读全文

posted @ 2018-02-24 15:11 AlanTu 阅读(7889) 评论(0) 推荐(0) 编辑

C语言sprintf与sscanf函数
摘要:1、前言 我们经常涉及到数字与字符串之间的转换,例如将32位无符号整数的ip地址转换为点分十进制的ip地址字符串,或者反过来。从给定的字符串中提取相关内容,例如给定一个地址:http://www.bokeyuan.cn:2345,我们要从地址中提出协议,主机地址和端口号。之前对字符串和数字之间的关系 阅读全文

posted @ 2018-02-24 15:10 AlanTu 阅读(1300) 评论(0) 推荐(0) 编辑

C语言宏高级用法
摘要:1、前言 今天看代码时候,遇到一些宏,之前没有见过,感觉挺新鲜。如是上网google一下,顺便总结一下,方便以后学习和运用。C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简单的字符串替换,根据是否带参数分为无参和带参。宏的简单应用很容易掌握,今天主要总结一下宏的特殊符号及惯 阅读全文

posted @ 2018-02-24 15:10 AlanTu 阅读(27495) 评论(0) 推荐(1) 编辑

C语言栈与调用惯例
摘要:1、前言 最近在再看《程序员的自我修养》这本书,对程序的链接、装载与库有了更深入的认识。关于这本书的评价可以去豆瓣看看http://book.douban.com/subject/3652388/,强烈推荐给每一位程序员哈。今天看了第十章内存,主要讲的是栈和堆的管理。主要问题是:函数在栈中是如何布局 阅读全文

posted @ 2018-02-24 15:09 AlanTu 阅读(562) 评论(0) 推荐(0) 编辑

C语言二维数组作为函数的参数
摘要:前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数。在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示。我写程序的错误如下程序所示: 1 #include <cstdio> 2 void print(int *a[3]) 3 { 4 printf("%d\n" 阅读全文

posted @ 2018-02-24 15:08 AlanTu 阅读(70161) 评论(1) 推荐(7) 编辑

直接管理内存
摘要:C++语言定义了两个运算符来分配和释放动态内存。运算符new分配内存,delete释放new分配的内存。 相对于智能指针,使用这来年刚给运算符管理内存非常容易出错,随着我们逐步详细介绍这两个四月份,这一点会更为清楚。而且,自己直接管理内存的类与使用智能指针的类不同,它们不能依赖类对象拷贝、赋值和销毁 阅读全文

posted @ 2018-02-23 15:55 AlanTu 阅读(131) 评论(0) 推荐(0) 编辑

动态内存和智能指针
摘要:由编译器自动分配的内存都有着严格的生存期。全局对象在程序启动时分配,在程序结束时销毁。对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。局部static对象在第一次使用前分配,在程序结束时销毁。 除了自动和static对象外,C++还支持动态分配对象。动态分配的对象的生存期与它 阅读全文

posted @ 2018-02-23 15:54 AlanTu 阅读(355) 评论(0) 推荐(0) 编辑

导航