![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础
文章平均质量分 60
天剑客
爱生活,爱学习,爱旅游,爱文学!
展开
-
C++中覆盖和隐藏
覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 (转载 2014-04-01 09:56:16 · 1103 阅读 · 0 评论 -
浅议 Dynamic_cast 和 RTTI
原文链接:http://www.cnblogs.com/zhyg6516/archive/2011/03/07/1971898.html http://blog.csdn.net/daniel_ustc/article/details/21462709第一部分:一、C++的4中类型转换我们应该比较熟悉C的类型转换即由圆括号和标识符组成,但是对于C的类型转换有时转载 2014-04-02 15:57:59 · 787 阅读 · 0 评论 -
C++中创建对象的时候加括号和不加括号的区别
c++创建对象的语法有-----1 在栈上创建 MyClass a;2 在堆上创建加括号 MyClass *a= new MyClass();3 不加括号 MyClass *a = new MyClass;4.---------------MyClass a();声明了一个返回值为MyClass类型的无参函数。#include class MyClas原创 2014-04-01 15:26:05 · 9434 阅读 · 6 评论 -
C++字符数组、字符指针、strlen、sizeof总结
对于字符数组与字符指针:1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc",那么编译器帮你存储的是"abc\0".比如char a1[]="success";与char a2[] = {'s','u','c','c','e','s','s'};a1将会自动添加字符串结束符,a2不会自动添加。2. 字符串直接量作为字符指针的初始转载 2014-04-01 15:59:50 · 1568 阅读 · 0 评论 -
在类的成员函数中调用delete this
在类的成员函数中能不能调用delete this?答案是肯定的,能调用,而且很多老一点的库都有这种代码。假设这个成员函数名字叫release,而delete this就在这个release方法中被调用,那么这个对象在调用release方法后,还能进行其他操作,如调用该对象的其他方法么?答案仍然是肯定的,调用release之后还能调用其他的方法,但是有个前提:被调用的方法不涉及这个对象的数据成员和虚转载 2014-08-20 21:56:11 · 1366 阅读 · 0 评论 -
vector排序方法sort应用
使用vector的sort方法,有两种形式,一种是在类内部使用操作符重载实现,一种是在类外面写一个比较函数。但是sort方法无法直接传入其它形参,在需要动态排序相对某个人的位置时,采取了间接通过静态变量的方法。为防止并发量巨大时,静态变量无法及时改变而产生错误数据,故用一循环去验证等待赋值,排完序后再还原为初始值。转载 2014-08-17 07:39:47 · 760 阅读 · 0 评论 -
#pragma warning(disable:4996)
warning C4996: strcpy was declared deprecated 在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸转载 2014-04-01 16:15:25 · 13038 阅读 · 1 评论 -
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
本文转自:http://blog.csdn.net/xiao1ni1zi/article/details/13771957 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。转载 2014-04-02 16:26:48 · 692 阅读 · 0 评论 -
vs命令行工具查看对象内存分配情况
VS中有一个非常重要的编译选项:对于查看类的对象的内存布局,微软内部在VS中(要先进入 开始->Microsoft Visual Studio -> Visual Studio Tools -> Visual Studio 2012开发人员命令提示)提供了一个非常重要的编译选项:/d1reportSingleClassLayout 比如,如果向查看文件test.cpp中的类Ch转载 2014-03-21 14:13:59 · 3847 阅读 · 0 评论 -
C++用new创建对象和不用new创建对象的区别解析
#include using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配 A b = A(1); //栈中分配 A* c = new A(1); //堆中分配转载 2014-04-01 14:20:32 · 1025 阅读 · 0 评论 -
typedef和define的作用域
原文转自:http://blog.sina.com.cn/s/blog_70ec9a6f01014mqs.htmltypedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。如:ty转载 2014-08-17 13:52:26 · 667 阅读 · 0 评论 -
C语言指针强制类型转换
概要:C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型。例如,定义如下:int a; float b;转载 2014-04-01 10:37:54 · 1254 阅读 · 0 评论 -
String类的实现
class String{private: char *m_data;public: String(const char *str = NULL); String(const String &s); ~String(); String operator= (const String &s);};String::String(const char *str = NULL){原创 2014-09-11 20:48:25 · 644 阅读 · 0 评论 -
CPU中的大端与小端
一、如何判断CPU是大端还是小端?明白大端和小端的区别,实现起来就非常简单:转载 2014-09-12 11:12:17 · 1602 阅读 · 0 评论 -
大整数的乘法与阶乘运算
int main(){ int BigInt[1000]; int n = 1; printf("输入所求阶乘:"); scanf("%d",&n); BigInt[0] = 1; int digit = 1;//大整数的位数 int temp ; int carry;//进位 for(int i=2 ; i<=n ; i++){//遍历区间[2,n] carry = 0;原创 2014-09-12 14:41:04 · 1227 阅读 · 0 评论 -
extern"C"的用法解析
原文转自:http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html转载 2014-09-15 21:11:16 · 672 阅读 · 0 评论 -
C和C++程序设计常见的错误代号收集
第一章 C/C++程序设计概述 1. 为什么语句末要加分号“;”?分号是C语句的组成部分,不能漏掉或忘记。例如:double r // 该语句编译时就会出现语法错误。并提示错误信息:cin>>r ;转载 2014-09-19 06:35:51 · 1909 阅读 · 0 评论 -
sizeof与strlen使用常见问题
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f();printf转载 2014-08-04 14:40:48 · 872 阅读 · 0 评论 -
C++中各运算符重载
1.为什么 输入输出运算符一定要重载为友元函数?答:原创 2014-08-04 08:53:31 · 805 阅读 · 0 评论 -
为什么内联函数,构造函数,静态成员函数不能为virtual函数
原文转自:http://blog.csdn.net/ylong17/article/details/6652344为什么内联函数,构造函数,静态成员函数不能为virtual函数为什么内联函数,构造函数,静态成员函数不能为virtual函数?1> 内联函数内联函数是在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾,不能定义内联函数转载 2014-04-02 16:30:35 · 604 阅读 · 0 评论 -
结构体位制概念
原文转自:http://capacity.blog.163.com/blog/static/20866413120128172228953/在使用结构体位制的时候有两点要特别注意:1.//位段成员的类型仅能够为unsigned或者int2.unsigned b:4; unsigned :0; //定义长度为0的位段时不能指定名字,否则编译不过 unsigned转载 2014-04-03 15:19:39 · 916 阅读 · 0 评论 -
良好的编程习惯(二)---基类函数的定义与生命
今天在学习设计模式,本来是想定义一个接口类,提供纯抽象方法,但如果声明函数为纯虚函数,又会导致leifeng成为抽象类,不能实例化对象,不便于使用工厂模式。于是习惯性的改成了原创 2014-05-01 20:34:24 · 958 阅读 · 0 评论 -
C++函数重载机制探究
原文来自:http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html转载 2014-05-16 15:12:07 · 573 阅读 · 0 评论 -
VS运行过程中出现“不明确的符号”提示
最可能的原因之一是你用了C++保留字,将它重命名为另外一个名称可以原创 2014-05-11 18:22:55 · 30888 阅读 · 3 评论 -
良好的编程习惯(一)---在类构造函数中多使用this明确指定
如定义一个student类class student{private:string name;};原创 2014-05-01 15:20:37 · 719 阅读 · 0 评论 -
今天才发现printf不能直接输出string类型
近期研究设计模式,输出时心血来潮用了c版本的printf结果就蛋疼了,一直输出shiluanma原创 2014-05-01 13:41:57 · 17237 阅读 · 2 评论 -
出现链接错误:无法解析的外部命令
常常是某函数声明了但没有定义导致的,可以使用“转到定义”测试原创 2014-05-18 11:29:07 · 624 阅读 · 0 评论 -
C++中const成员函数和const对象
1.const数据成员:跟const常量一样,只是一个在类里(而且是在构造函数里),一个在类外而已,都必须初始化。2.const成员函数:即普通成员函数后再加const。它可以读取数据成员的值,但不能修改它们。若要修改时,数据成员前必须加mutable。以指定其可被任意更改。mutable是ansi c++考虑到实际编程时,可能一定要修改const对象中的某个数据成员而设的。const成员原创 2014-05-13 17:03:11 · 1332 阅读 · 0 评论 -
一级指针与二级指针
程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{ s=(char *) malloc(100);}void main(){ char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p) free(p);}程序2:void myMalloc(ch转载 2014-07-24 10:37:41 · 735 阅读 · 0 评论 -
C++ 函数使用形参传入二维数组实参的方法
C++函数里,如果要使用形参访问二维数组,只能使用指向行的指针向量指向行的指针作为形参有两种写法:“数据类型 形参名[][行长度]”或者 “数据类型 (*形参名)[行长度]”。如f(char a[][3])或者f(char (*a) [3])如:int main(){ int p[2][3]={3,5,5,6,1,9};int m;m=findmax(p,sizeo转载 2014-07-27 23:13:53 · 3118 阅读 · 0 评论 -
C++中如何表示2进制,8进制,16进制变量
转自:http://qimo601.iteye.com/blog/14236661、C和C++都没有提供二进制数的表达方法。2、C,C++语言中,如何表达一个八进制数呢? 如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。 所以转载 2014-07-26 21:49:21 · 2556 阅读 · 0 评论 -
动态二维数组的分配和释放
动态二维数组的分配与释放 两种方法:1。先定义一个一维数组的类型,然后再用该类型定义一个一维数组(实际上已经成为二维的) 相当于递归定义 typedef int array[COL]; //使用typedef定义一个具有COL个元素的数组类型转载 2014-08-04 08:49:28 · 876 阅读 · 0 评论 -
make pair使用方法
template pair make_pair (T1 x, T2 y) { return ( pair(x,y) ); } 于是可以原创 2014-08-05 13:51:38 · 9019 阅读 · 0 评论 -
拷贝构造函数的作用
原文转自:http://blog.csdn.net/netanimals/article/details/6461734转载 2014-08-04 13:42:14 · 981 阅读 · 0 评论 -
VS中如何去掉字符串操作函数的警告信息 _CRT_SECURE_NO_DEPRECATE
Project -> Properties -> C/C++ -> Command Line加入/D "_CRT_SECURE_NO_DEPRECATE"禁用掉安全监察转载 2014-08-04 14:30:43 · 987 阅读 · 0 评论