文章分类 - C++|C++/CLI|C|Objective-c
摘要:1. 为什么 fflush(stdin) 是错的? 首先请看以下程序: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int main( void ) { int i; for (;;) { fputs("Please input an
阅读全文
摘要:这里以一个简单的C语言代码为例,来分析函数调用过程 代码: 1 #include <stdio.h> 2 3 int func(int param1 ,int param2,int param3) 4 { 5 int var1 = param1; 6 int var2 = param2; 7 int
阅读全文
摘要:常变量在定义的时候必须初始化,所以当你在a.cpp中定义extern const double pi=3.14; b.cpp中extern const double pi;当编译系统发现a.cpp中的全局常变量时,就知道它pi是常量,而换过来的时候,在a.cpp中定义const double pi=
阅读全文
摘要:1. 定义 插入型迭代器(Insert Iterator),又叫插入器(Inserter)。 2. 作用 插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。 算法库对所有在容器上的操作有约束:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入
阅读全文
摘要:当直接使用T2A W2A A2W,在编译时会出现报错:error C2065: “_lpw”: 未声明的标识符 等 解决方法: 增加头文件 #include<atlconv.h> 并在使用T2A等前加上语句 USES_CONVERSION;
阅读全文
摘要:在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利 用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解 explicit关键字的功能
阅读全文
摘要:一、预处理的由来: 在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C 语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。 二、常见的预处理功能
阅读全文
摘要:对于具有标准定义转换的简单类型而言工作的很好。然而,这样的转换符也能不分皂白的应用于类(class)和类的指针。ANSI-C++标准定义了四个新 的转换符:'reinterpret_cast', 'static_cast', 'dynamic_cast' 和 'const_cast',目的在于控制类
阅读全文
摘要:在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对 象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C+
阅读全文
摘要:1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免clas
阅读全文
摘要:使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。
阅读全文
摘要:sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节。 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本。他是一个和机器相关的unsigned类型,其大小足以保证内存中对象的大小。 1
阅读全文
摘要:全局存储,局部调用 void fun(){ int a = 0; ++a; cout << a << ' ';}void func(){ for (int i = 0; i < 100;++i) { fun(); } cout << endl;} 输出结果是 1到100
阅读全文
摘要:A析构添加了virtual 不添加 结论: 1、如果是普通对象(B b),加不加virtual都会先析构B,再析构A。 2、如果是指针(A* p = new B,delete p),加上virtual才会先先析构B,再析构A。不然只会调用基类的析构函数。
阅读全文
摘要:首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下两种情况:一. 在 MFC
阅读全文
摘要:1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明: A volatil
阅读全文
摘要:常见命名空间理解错误: 1、命名空间只是一个集合而已。不代表,你使用命名空间就能够随意访问任何命名空间里面的东西。只能必须引用到某个头文件,然后使用头文件里面命名空间相应声明的东东。 2、变异的时候,mk文件必须包含所有需要的文件,包括头文件。 namespace中文意思是命名空间或者叫名字空间,传
阅读全文
摘要:1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。 4. 多
阅读全文
摘要:友元是指: 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分(注意友元函数不是类的一部分),但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友
阅读全文
摘要:在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static! 在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。stati...
阅读全文

浙公网安备 33010602011771号