![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++ 知识点
文章平均质量分 76
魏尔肖
如果生命没有起伏那么何来意义
展开
-
静态成员函数访问构造函数
C++中,静态成员函数可以访问静态成员变量和静态成员函数,因为类的非静态成员函数会传入一个隐藏的this指针,这是大家都知道的。非静态的成员函数是属于类的,不属于某个对象,所以不含有this指针,所以只能调用静态成员函数和静态成员函数,但是今天在实现单例模式(一个类只能拥有一个对象时发现静态成员函数可以访问构造函数,难道构造函数是静态的吗?)class Signalleton{public:原创 2017-04-08 00:16:27 · 3135 阅读 · 5 评论 -
模拟库函数实现字符串的操作
//求字符串的长度size_t Strlen(const char* string){ const char* str = string; assert(string); while (*string ++) ; return (string - str - 1);}//比较字符串大小int Strcmp(const char* str1, c原创 2017-04-03 21:48:40 · 306 阅读 · 0 评论 -
static和extern的关系
static:在c语言中,static可以修饰全局变量,局部变量和函数。 在c++中static修饰类的成员函数,那么这个函数属于这个类,而不是属于这个类的特定对象,static成员函数没有this指针。static修饰类中的变量,表示该变量是该类所有对象共享的,而且这个变量在储存空间中只有一个副本,静态成员函数只能访问静态成员函数和静态成员变量,不能访问非静态的。2.1. 修饰局部变量 一般原创 2017-04-03 16:14:52 · 1037 阅读 · 0 评论 -
C++智能指针
1. 智能指针的由来C++中的动态内存需要用户自己来维护,动态开辟的空间,在出函数作用域或者程序正常退出前必须释放掉,否则会造成内存泄露,有时我们已经非常谨慎了,然防不胜防,为了更容易且更安全的管理动态内存,C++推出了智能指针(smart pointer)类型来管理动态对象。智能指针存储指向动态对象的指针,用于动态对象生存周期的控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露RAII(Re原创 2017-04-03 10:15:13 · 868 阅读 · 0 评论 -
const的用法
原文链接:http://blog.csdn.net/gjggj/article/details/68056617一、 如何区分顶层const和底层const指针如果添加const修饰符时有两种情况: 1 指向常量的指针:代表不能改变其指向内容的指针。声明时const可以放在类型名前后都可,拿int类型来说,声明时:const int和int const 是等价的。声明指向常转载 2017-03-30 23:39:12 · 348 阅读 · 0 评论 -
指针与数组 字符指针,字符串和字符数组的区别
指针和数组是不相等的,把一个数组名作为一个参数传递给函数时数组名就是指向第一个元素的指针,在大多数表达式中数组名的值是指向第一个元素的指针(有两个例外,一个是sizeof返回的是整个数组的字节数,一个是&操作符返回的是一个指向数组的指针),但不代表两者等价。int a[3];int *b;声明一个数组时,编译器会根据声明申请元素的个数保留内存空间,然后再创建数组名,a的值就原创 2017-03-30 22:50:49 · 4014 阅读 · 0 评论 -
string类的浅拷贝,深拷贝,写实拷贝
string类的浅拷贝形式,这种情况下程序会奔溃,因为拷贝构造时共用了一块空间,但会析构两次,第一次释放后就为空#include #include using namespace std;class String{public: String (const char* str = "") { if (str == NULL) { _str原创 2017-03-01 18:09:51 · 472 阅读 · 1 评论 -
常用的汇编指令
and 与运算or 或运算xor 异或运算not 取反test 测试(两操作数作与运算,仅修改标志位,不回送结果)shl 逻辑左移sal 算术左移(=shl)shr 逻辑右移sar 算术右移(=shr)rol 循环左移ror 循环右移rol 通过进位的循环左移rcr 通过进位的循环右移以上八种移位指令,其移位次数可达255次。移位一次转载 2017-03-12 10:01:47 · 361 阅读 · 0 评论 -
虚函数总结(二) 多重继承的虚函数表
多继承下的虚函数是怎样的呢?没有虚函数覆盖时:运行下面程序#include using namespace std;typedef void (* pFun)(void);class Base1{public: virtual void e(){ cout<<"B1:: e() "<<endl;} virtual void f(){ cout<<"B1:: f原创 2017-03-14 21:58:33 · 1332 阅读 · 0 评论 -
虚函数总结 (一) 单继承虚表
虚函数属于动态多态的形式原创 2017-03-13 23:54:23 · 391 阅读 · 0 评论 -
C++中成员函数的重载,覆盖和隐藏的区别
成员函数的重载,覆盖,和隐藏很容易混淆成员函数的重载:1. 必须在同一作用域内2. 函数名字相同3. 参数列表不同(包括参数个数, 参数类型或者顺序不同)不受virtual的影响成员函数的覆盖: 1. 为别位于基类和派生类中2. 函数名相同3. 参数列表完全相同4. 基类函数必须有virtual修饰(virtual关键字告诉编译器,派生类中相同原创 2017-03-26 23:16:04 · 507 阅读 · 1 评论 -
引用和指针的关系
引用在定义时必须初始化,指针没有要求 int &rNum; //未初始化不能通过编译 int *pNum; //可以 2. 一旦一个引用被初始化为指向一个对象,就不能再指向 其他对象,而指针可以在任何时候指向任何一个同类型对象 int iNum = 10; int iNum2 = 20; int &rNum = iNum; &rNum = iNum2; //不能通过 3. 没原创 2017-04-04 15:05:53 · 384 阅读 · 0 评论