随笔分类 - c++
摘要:使用new时,不建议这样写,只是一个小小test。 注意:Get(char **p) 函数不能为Get(char *p)。
阅读全文
摘要:1. 题目: 链接:https://www.nowcoder.com/questionTerminal/850fde3d987f4b678171abd88cf05710 请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error 示例1 输入 123 123 abd 12
阅读全文
摘要:一个可变参数模板就是一个可接受可变数目参数的模板函数或模板类。 可变数目的参数被称为参数包。 1 //可变参数模板;sizeof ...()运算符 2 template <typename ... Args> 3 void g(Args ... args) 4 { 5 cout<<sizeof ..
阅读全文
摘要:知识点: 1. 深拷贝 类中含有指针成员时,需要显式定义构造函数实现深拷贝。 2. 类中的动态内存管理 保证类的析构函数被调用。 一切都在代码中: 新 type 与内置类型保持一致性!!!
阅读全文
摘要:专题--作用域与可见域 一、作用域 c++作用域可分为5类:函数原型作用域、块作用域、类作用域、文件作用域和全局(程序)作用域(跨文件)。 1. 函数原型作用域(最小的作用域) 函数原型:int func(int x); 这是一个函数声明,函数形参x 的作用域就时所谓的函数原型作用域。 2. 块作用
阅读全文
摘要:关于避免头文件的重复引用 #ifdef 、和 #ifndef 测试某个宏是否被定义,经常用于避免头文件的重复引用。 头文件的重复引用往往是由于包含嵌套造成的,比如 func.cpp文件包含如下头文件: //func.cpp文件中 #include "A.h" #include "B.h" 而 A.h
阅读全文
摘要:程序编译 程序的编译流程大体可分为编辑、预处理、编译和链接4个步骤。 1. 编辑 编辑程序:将源文件输入计算机进行修改和保存的过程就称为“编辑”。 2. 预处理 预处理器是在真正的编译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含文件以及执行宏替代。 预处理器在编译器之前根据指令更改程序
阅读全文
摘要:顺序容器--额外的string操作 除了顺序容器共同的操作之外,string类型还提供了一些额外的操作。这些操作中大致可以分为两部分: 1. 提供string类和C风格字符出租之间的相互转换; 2. 增加了允许我们用下标代替迭代器的版本。 构造string的其他方法 s是string s2 从下标p
阅读全文
摘要:18.3 多重继承与虚继承 规则基本与“单继承”是一样的,在次记录几点需要关注的点! 派生类构造函数初始化所有基类 构造一个派生类的对象将同时初始化它的所有基类子对象。多重继承的派生类的构造函数初始值也只能初始化它的直接基类: 基类的构造顺序与派生列表中基类的出现顺序保持一致,而与派生类构造函数初始
阅读全文
摘要:在C语言中,static关键字至少有下列几个作用: 1. 函数体内static变量的作用范围为该函数体,不同于auto变量(普通变量),该变量的内存只被分配一次,因此其值在下次调用时扔维持上次的值。 2. 在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问。 3. 在
阅读全文
摘要:专题--类初始化列表 1.类成员为const类型 原因:const对象一旦创建后其值就不能改变,所以const对象必须初始化。 2.类成员为引用类型 原因:const对象和引用类型都只能初始化而不能赋值。构造函数体内只能实现赋值,初始化列表是初始化这两种类型成员的唯一机会。 初始化和赋值是不同的概念
阅读全文
摘要:第14章 重载运算与类型转换 重载函数调用运算符:
阅读全文
摘要:一、关于数组的使用,有几个特殊的地方需要注意: 1.一维数组名可当做指针 具体应用:一维数组/二维数组的传参(参见博客“c++ --二维数组参数传递http://www.cnblogs.com/cygalaxy/p/6963789.html”) 2.动态数组 具体应用:根据实际需要为数组开辟具体大小
阅读全文
摘要:都知道,数组名和函数名一样,可以当做指针(普通指针和函数指针)来用。 关于二维数组做为形参声明和实参传递,直接看代码: 推荐使用第2种方式,简单明了!
阅读全文
摘要:1. C/C++中每个字符串都以'\0'作为结尾,这样我们就能很方便找到字符串的最后结尾。 注意:谨记字符串末尾的空字符,防止数组越界。 2. C/C++把常量字符串放到单独的一个内存区域 为了节省内存,C/C++把常量字符串单独放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,它们实际上
阅读全文
摘要:总结--C++ primer 5 一、左值和右值(P121) 1. 概念 C++的表达式,要不然是右值,要不然是左值。 这两个名词继承与C语言,在C中是为了帮助记忆:左值可以位于赋值语句的左侧,右值则不能。在C++中,二者的区别没那么简单:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被
阅读全文
摘要:专题--泛型编程的基础(模板) 面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于:OOP能处理类型在程序运行之前都未知的情况(动态绑定);而泛型编程中,在编译时就能获知类型了。模板是泛型编程的基础。 一、 函数模板 1. 适用情况:如果两个函数几乎是相同的,唯一的差
阅读全文

浙公网安备 33010602011771号