随笔分类 -  C++学习

摘要:友元的三种类型 全局函数做友元 类作友元 成员函数做有元 特点 友元函数不是成员函数,所以友元函数没有this指针。 它可以访问类的私有(private)和保护(protected)成员。 友元函数通常定义在类外,但在类中声明为友元。 注意友元的定义要么放在最开始,要么放在最后。 友元函数 在类的定 阅读全文
posted @ 2024-05-23 17:20 baobaobashi 阅读(76) 评论(0) 推荐(0)
摘要:构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 一、构造函数注意 名字和类名相同。 没有返回类型。 有一个(可以为控)的参数列表和一个(可以为空)的函数体。 可以重载。 不能被声明为const。 当创建一个const对象时,知道构造函数完成初始化过程,对象才能 阅读全文
posted @ 2024-05-23 00:50 baobaobashi 阅读(86) 评论(0) 推荐(0)
摘要:一、声明 要声明一个可以指向函数的指针,只需要用指针替换函数名即可。 bool LengthCompare(const string &s1, const string &s2); //使用指针进行替换 bool (*pf)(const string &s1, const string &s2); 阅读全文
posted @ 2024-05-22 11:17 baobaobashi 阅读(36) 评论(0) 推荐(0)
摘要:一、函数匹配 当我们有重载函数的时候并且重载函数参数可以通过类型转换得到时,我们需要考虑函数匹配,调用的到底是那个函数。 void f(); void f(int); void f(int, int); void f(double, double = 3.14); f(5.6); //调用f(dou 阅读全文
posted @ 2024-05-20 00:53 baobaobashi 阅读(53) 评论(0) 推荐(0)
摘要:一、指定默认参数 在函数的声明或者初始化的时候,调用函数的时候不需要提供全部的参数。 //带默认参数的函数 int fun(int a, int b = 10, int c = 20); a是普通参数,b和c是带有默认参数的参数。 二、调用方法 fun(5); //a = 5 b = 10 c = 阅读全文
posted @ 2024-05-18 17:30 baobaobashi 阅读(58) 评论(0) 推荐(0)
摘要:一、重载原则 原则: 不允许两个函数除了返回类型以外其他所有的要素全部相同 顶层const不影响传入函数的对象,一个顶层const的形参无法与另一个没有顶层const的形参区分。 int fun(const int a); //const普通变量,这个和下面的是一样的 int fun(int a); 阅读全文
posted @ 2024-05-18 16:41 baobaobashi 阅读(20) 评论(0) 推荐(0)
摘要:一:作用 std::initializer_list 是 C++11 引入的一个新特性,它允许你在函数参数中传递一个花括号 {} 初始化的列表。这个列表是临时的,并且主要用于初始化数组、容器或其他需要多个初始值的对象,函数实参数量未知且全部实参类型都是相同的。 例子: #include <iostr 阅读全文
posted @ 2024-05-16 22:45 baobaobashi 阅读(185) 评论(0) 推荐(0)
摘要:一、整形提升 整型提升是一种隐式类型转换,当涉及到小于int类型的整数(如char、short、bool等)时。整型提升的目的是确保所有的操作数在算术运算或比较操作中具有相同的类型,通常是int类型,如果int不能表示该值,则可能会提升到unsigned int或更大的整数类型。 二、无符号数和带符 阅读全文
posted @ 2024-05-12 15:53 baobaobashi 阅读(218) 评论(0) 推荐(0)
摘要:一、sizeof() sizeof 是一个操作符,它在编译期间确定的,返回的是静态大小。 它可以应用于基本类型、类类型、数组和指针等。 例如:sizeof(int) 或 sizeof(array)。 对于数组,sizeof 返回整个数组的大小(包括所有元素)。 对于指针,sizeof 返回指针本身的 阅读全文
posted @ 2024-05-11 13:13 baobaobashi 阅读(131) 评论(0) 推荐(0)
摘要:一、为什么用迭代器 要访问string和容器中的元素,可以通过下标运算符实现。但是只有少数容器实现了下标访问,所以需要一个更为通用的方式来访问,就引入了迭代器(iterator)。从这一点上看,迭代器和指针类似。 二、迭代器的运算符 操作符名称 作用 *iter 返回迭代器所指向元素的引用 iter 阅读全文
posted @ 2024-05-11 10:32 baobaobashi 阅读(21) 评论(0) 推荐(0)
摘要:一、定义和初始化vector 1、初始化 vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型。如vector < int >。 1、默认初始化 vector<string> s; 2、拷贝初始化 注意:字面值不能构造vector对象 vector<int> i; v 阅读全文
posted @ 2024-05-10 17:57 baobaobashi 阅读(107) 评论(0) 推荐(0)
摘要:一、定义和初始化string 1、默认初始化: std::string str; // str是一个空字符串 2、使用字面值初始化: std::string str1 = "Hello, World!"; // str1包含字符串"Hello, World!" 3、使用字符数组初始化: char a 阅读全文
posted @ 2024-05-10 15:14 baobaobashi 阅读(87) 评论(0) 推荐(0)
摘要:什么是 顶层const 和 底层const 顶层const:表示指针是一个常量。 底层const:表示指针所指向的对象是一个常量。 1、例子 指针中const const int *const p = new int(10); 第一个const是底层const ,第二个是顶层const。 普通变量中 阅读全文
posted @ 2024-05-07 12:00 baobaobashi 阅读(171) 评论(0) 推荐(0)
摘要:1、常量表达式是什么 在编译时就能确定其值的表达式。换句话说,常量表达式的值在编译过程中就已经是已知且不会改变的。常量表达式是由 数据类型 和 初始值 共同决定的。(注意区分const 和 常量表达式) 常量表达式的特点: 值在编译时已知:常量表达式的值在编译阶段就能确定,而不是在运行时。 不会改变 阅读全文
posted @ 2024-05-07 01:41 baobaobashi 阅读(95) 评论(0) 推荐(0)
摘要:wchar_t(宽字符)类型 1、什么是wchar_t(宽字符) char 类型通常只有 8 位,许多语言(如中文、日文、韩文等)的字符集包含的字符数目远超过 256 个,因此 char 类型无法直接表示这些字符。其大小通常为 16 位或 32 位(具体取决于编译器和平台),wchar_t 能够表示 阅读全文
posted @ 2024-05-06 09:05 baobaobashi 阅读(1145) 评论(0) 推荐(0)
摘要:1、复习 1.1 指针s是否加const以及const位置不同的引用 int *s = &a; int main() { int a = 10, b = 20; int *s = &a; int *p = s; int *&p1 = s; const int *&p2 = s; //error in 阅读全文
posted @ 2023-02-02 17:21 baobaobashi 阅读(46) 评论(0) 推荐(0)
摘要:一、复习 1.1 .data和.test 初始化的变量和未初始化的变量是否会占用空间大小。 int a; int b; int max[10] = {12,23,34,45,56,67,78}; int main() { } a、b不占用exe文件的空间,max会占用空间。当程序加载到内存的时候,在 阅读全文
posted @ 2023-01-31 22:32 baobaobashi 阅读(60) 评论(0) 推荐(0)
摘要:new和malloc的区别,定位new,this指针的深入,const的回顾,简单的构造和析构函数 阅读全文
posted @ 2023-01-12 15:33 baobaobashi 阅读(157) 评论(0) 推荐(0)
摘要:C++名字粉碎技术拓展 阅读全文
posted @ 2023-01-08 00:05 baobaobashi 阅读(506) 评论(0) 推荐(0)