
c++重要知识点
meetings
这个作者很懒,什么都没留下…
展开
-
重载,覆盖,隐藏,多态辨析
重载特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。隐藏:是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如原创 2015-03-15 16:24:05 · 426 阅读 · 0 评论 -
单例模式的两种实现方式
1. 饿汉模式:#include using namespace std;class Singleton {public: static Singleton& getInst (void) { return s_inst; }private: Singleton (void) {} Singleton (const Singleton&); static Single原创 2015-08-06 16:27:57 · 1775 阅读 · 0 评论 -
函数指针和指针函数
函数指针1. 什么是函数指针?函数指针指向的是特殊的数据类型,函数的类型是由其返回的数据类型和其参数列表共同决定的,而函数的名称则不是其类型的一部分。本质是一个指针变量。2.初始化和赋值我们知道,不带下标操作符的数组名会被解释成指向首元素的指针。当一个函数名没有被调用操作符修饰时,会被解释成指向该类型函数的指针。假如我们现在实现了一个函数func:int lex原创 2015-07-23 21:54:37 · 686 阅读 · 0 评论 -
指向指针的引用和指向指针的指针
1. 指向指针的引用#include #include using namespace std;// int *&lhs 的定义应该从右向左理解:// lhs 是一个引用,与指向 int 的指针相关联。// 也就是说,lhs 是传递进 ptrswap 函数的指针的别名。// 注意:不能这样定义:int &*lhs,编译报错提示为:cant declare pointer to “i原创 2015-07-20 14:47:50 · 1155 阅读 · 0 评论 -
引用的存在价值
实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?答:“用适当的工具做恰如其分的工作”分析: ①一般而言,当你需要考虑“不指向任何对象”的可能性时,或者是考虑“在不同时间指向不同对象”的能力时,你就应该采用指针。 前一种情况可以将指针设置为 null, 后一种情况可以改变指针所指向的对象。 ②而当你确定“总是会代表某个对象”,并且“原创 2015-07-19 12:04:35 · 707 阅读 · 0 评论 -
虚函数运行机制
class A {public: virtual void foo (void) { ... } virtual void bar (void) { ... }};class B : public A {public: void foo (void) { ... }};int main(){ A* pa = new A; pa->foo ();原创 2015-08-11 13:29:11 · 1526 阅读 · 0 评论 -
构造函数初始化列表和构造函数体内赋值
#include using namespace std;class A{public: A(int a,string str) { m_a = a; m_str = str; } //A(int a,string str):m_a(a),m_str(str){} void print() { cout << m_a << ' '<< m_str<< en原创 2015-07-24 11:13:23 · 1098 阅读 · 0 评论 -
c++中四种类型转换
reinterpret_cast(原类型变量)//重解释类型转换dynamic_cast(expression)//动态类型转换static_cast(expression)//静态类型转换const_cast(expression)//返回一个指向非常量的指针1.const_cast:常量指针被转化成非常量的指针,并且仍然指向原来的对象;常量引用被转换成非常量的引用,并且仍然指原创 2015-08-11 16:51:33 · 620 阅读 · 0 评论 -
函数指针的用法
什么是函数指针?函数指针指向的是特殊的数据类型,函数的类型是由其返回的数据类型和其参数列表共同决定的,而函数的名称则不是其类型的一部分。 一个具体函数的名字,如果后面不跟调用符号(即括号),则该名字就是该函数的指针(注意:大部分情况下,可以这么认为,但这种说法并不很严格)。 函数指针的声明方法// 定义函数指针pfint (*pf)(cons转载 2015-06-04 08:55:42 · 464 阅读 · 0 评论 -
C语言逻辑运算的短路特性
原理:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”(表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”举例:1、x=y=z=0;c=++x||++y&&++z;printf("x=%d,y=%d,z=%d",x,y,z);结果:x=1,y=0,z=0解释:由于第一个是“或”运算符,当++z为1时,它具原创 2015-03-14 16:54:49 · 8750 阅读 · 0 评论 -
对c++文件的学习
1,在目录下example.txt写入两句诗#include #includeusing namespace std;int main () { ofstream examplefile ("example.txt"); if (examplefile.is_open()) { examplefile examplefile原创 2014-07-08 15:13:19 · 408 阅读 · 0 评论 -
单例模式+工厂模式的c++实现
一、单例#include using namespace std;class Singleton {public: static Singleton& getInst (void) { return s_inst; }private: Singleton (void) {} Singleton (const Singleton&); static Singleton转载 2015-06-08 21:21:05 · 1385 阅读 · 0 评论 -
new和malloc的区别
1. malloc是库函数,在C++程序中,要用到malloc函数,必须包含malloc.h。malloc函数的原型是:void *malloc( size_t size ),其中,size是分配的空间大小。该函数返回一个void类型的指针,因此,在用malloc函数时,往往需要进行数据类型的强制转换: int *pm = (int*)malloc(2);原创 2014-09-17 17:21:37 · 461 阅读 · 0 评论 -
关于gets()/puts() 和getchar()/putschar() 和getline()
gets()/puts() 是对字符串的操作,getchar()/putschar()是对字符的操作gets()从标准设备读取字符直到遇到换行符为止;getchar()读取标准输入的下一个字符,直到遇到文件结束标志或发生错误。puts()将buffer中的字符输出到标准输出,直到遇到空字符('\0')为止;putchar(c)将c对应值输出到标准输出。成功的话返回c失败返回EOF#include ...原创 2015-07-01 12:41:21 · 925 阅读 · 0 评论