C/C++进阶知识1.0
C/C进阶知识1.delete与delete[ ]ClassA *pclassanew ClassA[5];delete pclassa;与int *p new int[5];delete p;1.1内置类型不调用析构函数1.2自定义类型析构函数调用一次2.内存知识2.1栈堆增长方向不同的原因栈向下增长堆向上增长的设计目的是为了最大化利用空间。2.2内存碎片问题来源频繁地申请与释放栈区是自动管理不存在内存碎片的问题堆区很可能有此问题。3.模板3.1模板实参的解释拿模板实参与函数实参对比// 函数参数 void func(int a, double b) { // a, b 是函数形参 // ... } int main() { int x 10; double y 3.14; func(x, y); // x, y 是函数实参 } // 模板参数 templatetypename T, int N T, N 是模板形参 class Array { T data[N]; }; int main() { Arrayint, 10 arr; // int, 10 是模板实参 // ^^^ ^^ T N 被赋予实参 }3.2类模板与模板类概念类模板模板类本质不是类是构建特定类的模板由类模板创建的具体类代码templatetypenameT class Stack {……};Stackint st1;Stackdouble st2;数量一个模板可以生成无数类每个模板对应一个类内存不占用代码段(未实例化)占用内存(已实例化)使用不能直接创建对象(需要显示指定)可以创建对象(已实例化)关系类的家族家族的一个成员4.cout中复合比较运算符cout (s1 s2) endl; //运算符优先级高5.字符串比较int main() { if (lll lll) { cout l; } } 最终输出l。6.流插入与流提取符号重载时的参数const问题但库中一般都不写。7.理论最大值nposstatic const size_t npos -1;使用时加string::前缀8.char字符sacnf读取输入12[回车]34[回车]9.生命周期有以下代码int main() { int i; for (int i 0; i 10; i) { cout i ; } return 0; }会因重定义了i而报错吗答案在C中不会 在古老版本(C89/C99)的C中会报错。优先级按位取反按位与按位异或按位或类内的友元函数非类模板 类外定义写在.h文件合适还是.cpp文件合适 .cpp文件1.多个.cpp文件同时包含会导致重定义。2.头文件中暴露与定义函数不合适 它是主要功能是声明的。3.编译时间增加 每次实现都要重新编译实现。*4.如果是模板则必须写入头文件。10.getline在全局函数(std内)默认换行符结束11.按位符进阶11.1异或符在提取只出现一次的数字题目的应用①任何数与0异或都是该数本身。②数异或其本身为0③异或中运算规律满足交换律与结合律a⊕b⊕c a⊕c⊕b a⊕(b⊕c) 。利用a⊕a 0 0⊕b b来解决 寻找只出现一次的数字。/* 输入nums [4,1,2,1,2] 输出4 */ class Solution { public: int singleNumber(vectorint nums) { for(int i 1; inums.size(); i) { nums[0] ^ nums[i]; } return nums[0]; } };11.2判断奇偶a1; //1 为奇数 0取二进制低几位a ((1 k) - 1)保留低k位其余位置 0。案例取低 k 位CPPint low x ((1 4) - 1); // 取 x 的低 4 位12. 十 二 十六 进制换算0x10AD 5C7E //十六进制 单位为字节14字节 14 16^0 * D 得0x10AD 5C8C 0……E13.字符与ASCII码值A~Z 65~90 // 26个英文字母 90-651 26a~z 97~122 //小写大大写小相差32\n 10 //是 \ (中文顿号英文反斜杠)不是 / 0~9 48~570~31 //这32个字符无法打印 如换行符、退格符14.字符/字符串15.define定义函数单行#define Add(a,b) ((a)(b))如果定义函数功能需要多行使用do{……}while(0)包含#define TARGET_SQURE(a) do{\ int result ((a)*(a));\ std::cout result std::endl;\ std::cout 完成 std::endl;\ }while(0)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2451086.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!