C++
Léon's Blog
一只野生程序猿
展开
-
[cpp]C++中的托管
C++编程语言从发展至今已经历经20年之久,我们在下面首先介绍了这一编程语言的基本概念以及构成。在大家了解完这些内容后,我们会进入近体那的主题,那就是为大家介绍什么事C++托管?C++ eof()函数相关应用技巧分享C++资源管理应用技巧讲解C++声明放置正确应用方式C++内联函数给我们带来哪些帮助C++智能指针应用方式体验C++这个词在中国大陆转载 2017-02-16 14:36:09 · 483 阅读 · 0 评论 -
[C++]snprintf函数
snprintf()函数用于将格式化的数据写入字符串,其原型为: int snprintf(char *str, int n, char * format [, argument, ...]);【参数】str为要写入的字符串;n为要写入的字符的最大数目,超过n会被截断;format为格式化字符串,与printf()函数相同;argument为变量。【返回值】成功则返回参数转载 2017-03-13 18:49:52 · 18705 阅读 · 0 评论 -
[C++]explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有转载 2017-03-13 20:38:16 · 221 阅读 · 0 评论 -
[C++]多个文件中定义同一个namespace
存在两种情况: 1)名字空间名称相同,成员名字不同,那么他们会自动合并为一个名字空间,可以理解为追加 2)名字空间名称相同,成员名称相同。那么程序会在调试过程的link时报错。因为连接器会检测到重复定义的变量。转载 2017-03-23 15:18:54 · 6594 阅读 · 0 评论 -
[C++]google perftools分析程序CPU / 内存的使用
最近,用到了google-perftool分析程序的内存和CPU的使用情况,总结一下使用的一些方法和体会,分享给有需要的朋友。首先,说说google-perftool,它是由google开发的用来分析C/C++程序性能的一套工具,这里的性能分析主要包括内存和CPU两个方面,内存分析使用google-perftool所提供的tcmalloc,CPU分析使用它所提供的profiler。下面先分别介绍一转载 2017-03-23 17:10:50 · 3438 阅读 · 0 评论 -
[C++]函数后面加const修饰
声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非co转载 2017-03-14 14:49:56 · 492 阅读 · 0 评论 -
[C++]多线程: 教你写第一个线程
hello thread!声明线程A的端口号#include <pthread.h>pthread_t tid;定义线程运行函数void thread_function(void *args){ printf("thread_function is called!\n"); //注意区别 cout << "thread_function is called! << endl;原创 2017-03-15 19:44:52 · 12379 阅读 · 0 评论 -
[C++] 抽象方法 vs 虚方法
虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如://抽象方法public abstract class Animal{ public abstract void Sleep(); public abstract void Ea转载 2018-05-04 15:07:31 · 1563 阅读 · 2 评论 -
[C++]static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;转载 2018-05-04 15:11:34 · 189 阅读 · 0 评论 -
[C++]linux编程 - C/C++每线程(thread-local)变量的使用
在一个进程中定义的全局或静态变量都是所有线程可见的,即每个线程共同操作一块存储区域。而有时我们可能有这样的需求:对于一个全局变量,每个线程对其的修改只在本线程内有效,各线程之间互不干扰。即每个线程虽然共享这个全局变量的名字,但这个变量的值就像只有在本线程内才会被修改和读取一样。线程局部存储和线程特有数据都可以实现上述需求。1. 线程局部存储线程局部存储提供了持久的每线程存储,每转载 2018-05-04 16:29:13 · 3313 阅读 · 0 评论 -
[C++]new带括号和不带括号
在new对象的时候有加上(),有不加(),不知道这个到底是什么区别?比如:CBase *base = new CDerived();CBase *base = new CDeviced; 很多人都说,加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数。这是有问题的。对于自定义类类型: 如果该类没有定义构造函数(由编译器合成转载 2017-03-13 16:59:01 · 3463 阅读 · 2 评论 -
[C++]类成员冒号初始化以及构造函数内赋值
通常我们对类成员进行“初始化”有两种方式:1. 构造函数后面跟冒号;2. 构造函数里面对成员进行赋值。有些人不太注意这个小细节,或者根本不知道他们的区别,认为两种方式是一样的。这个误解有时可能会对程序带来影响,这里我来介绍一下这两种方式。首先我们看这么一段代码:[cpp] view plain copyclass A {转载 2017-03-13 16:42:06 · 536 阅读 · 0 评论 -
[cpp]C++的explicit关键字
C++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用。我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的转载 2017-02-16 14:37:38 · 491 阅读 · 0 评论 -
[C++]什么是句柄?为什么会有句柄?
从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是”Handle”,本义就是”柄”,只是在计算机科学中,被特别地翻译成”句柄”,其实还是个”柄”。从一个小东西拎起一大堆东西,这难道不像是个”柄”吗?然后,指针其实也是一种”句柄”,只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是”句柄”。但指针也有着能从一个32位的值引用到一大堆数据转载 2017-02-27 20:54:48 · 11726 阅读 · 1 评论 -
[cpp]C++中的宏定义
1.不带参数的宏定义: 宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”。 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。 掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。 即在对相关命令转载 2017-02-15 20:11:13 · 15868 阅读 · 1 评论 -
[cpp]C++笔记
#include <iostream>using namespace std;int main(){ char c = 'a'; char *p; p = &c; char **q; q = &p; printf("%p\n", q); printf("%p\n", *q); printf("%c\n", **q); cout <原创 2017-03-10 15:18:38 · 175 阅读 · 0 评论 -
[C++]gflags的使用
google开源的gflags是一套命令行参数解析工具,比getopt功能更强大,使用起来更加方便,gflags还支持从环境变量、配置文件读取参数(可用gflags代替配置文件)。本文简单介绍gflags的使用,内容主要译自 http://gflags.googlecode.com/svn/trunk/doc/gflags.html 。 定义参数 使用flags需要包含头文件转载 2017-03-10 15:41:14 · 8410 阅读 · 1 评论 -
[C++]基于SSE指令集的程序设计简介
基于SSE指令集的程序设计简介 SSE技术简介 Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。Visual Studio .NET 2003提供了对SSE指令集的编程支持,从而允许用户在C++代码中不用编写汇编代码就可直接使用SSE指令的功能。MSDN中有关SSE技术的转载 2017-03-10 16:09:29 · 803 阅读 · 0 评论 -
[C++]sleep 和 usleep区别
函数名: sleep头文件: #include // 在VC中使用带上头文件 #include // 在gcc编译器中,使用的头文件因gcc版本的不同而不同功 能: 执行挂起指定的秒数语 法: unsigned sleep(unsigned seconds);示例:#include #includeint main(){ i转载 2017-03-22 20:54:24 · 27495 阅读 · 1 评论 -
[C++]虚函数和纯虚函数
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plain copy转载 2017-03-13 16:11:16 · 295 阅读 · 0 评论 -
[C++]虚方法
虚函数(虚方法)是C++动态联编 实现多态的重要手段,在函数声明时使用关键字virtual即可,如: virtual void func(void);注意:虚函数(虚方法)只针对类的成员函数,普通函数不可声明为虚函数!且一般只有在用到继承时才将基类的成员函数声明为虚函数!请看如下代码: 1 class parentClass 2 { 3 public: 4 parentClass()...转载 2018-07-04 19:59:12 · 404 阅读 · 0 评论