![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Hillbox
这个作者很懒,什么都没留下…
展开
-
用C++刷算法题需要掌握的基本语法(更新ing)
隔很长时间刷算法,就会把C++的语法丢掉一些。写下这篇文章用于复习。原创 2022-07-07 04:11:59 · 617 阅读 · 0 评论 -
C++语法(二十一)友元的三种实现
友元的目的是让类外函数或者其他类访问到类内的私有属性。友元实现的三种方式:全局函数做友元、类做友元、成员函数做友元。1、全局函数做友元#include <iostream>#include <string.h>using namespace std;class Home{ // 全局函数作为友元 friend void goodfriend(Home &home);public: Home(){ bedroom =原创 2021-10-03 14:52:14 · 646 阅读 · 0 评论 -
C++语法(二十)常函数、常对象
1、常函数常函数无法修改成员变量,除非这个成员变量用mutable修饰了。#include <iostream>using namespace std;class Person{public: void change() const { //m_a = 100; // 常函数无法修改成员变量 m_b = 100; // 除非这个成员变量用mutable修饰了 } int m_a; mutab原创 2021-09-28 03:18:24 · 153 阅读 · 0 评论 -
C++语法(十九)成员变量和成员函数的存储方式
在打印一个类对象的空间大小时,1、如果类是空的,则大小为1;#include <iostream>using namespace std;class Person{public:};void test(){ Person p; cout << sizeof(p) << endl;// 1}int main() { test(); return 0;}2、如果类有非静态成员变量,则大小为非静态成员变量的大小原创 2021-09-27 14:44:26 · 201 阅读 · 0 评论 -
C++语法(十八)静态成员变量、静态成员函数
当类中有静态成员变量时,所有对象共用这个静态变量。#include <iostream>#include <string.h>using namespace std;class Person{public: static int temp;};int Person::temp = 100;void test(){ Person p1; cout << p1.temp << endl; p1.temp =原创 2021-09-26 19:45:22 · 173 阅读 · 0 评论 -
C++语法(十七)类对象作为类成员时,构造函数与析构函数的调用顺序
题目说的是如下这种情况。class A{ };class B{ A a;}现在构造一个如上结构的类,通过打印来验证一下构造函数和析构函数的调用顺序。类person代表人,类phone代表手机,一个人有一个手机。现在看是先构造手机还是构造人?#include <iostream>#include <string.h>using namespace std;class Phone{public: Phone(string na原创 2021-09-26 15:50:22 · 420 阅读 · 0 评论 -
C++语法(十六)浅拷贝、深拷贝
浅拷贝:编译器自动添加的拷贝构造函数进行的值拷贝。深拷贝:在堆区重新申请空间进行拷贝操作。#include <iostream>using namespace std;class Person{public: Person(){ cout << "默认构造函数" << endl; } Person(int age, int height){ m_age = age; m_h原创 2021-09-17 16:40:59 · 124 阅读 · 0 评论 -
C++语法(十五)构造函数、析构函数和拷贝构造函数
构造函数:主要是创建对象时系统自动调用从而为成员变量赋值。析构函数:主要是销毁对象时系统自动调用从而执行一些清理工作。原创 2021-09-16 01:13:23 · 219 阅读 · 0 评论 -
C++语法(十四)封装
封装是把属性和行为作为一个整体,表现生活中的事物,并且对属性和行为加以权限控制。属性,又称成员属性、成员变量。行为,又称成员函数、成员方法。权限有public公共权限、protected保护权限和private私有权限。class Person{public: // 类內可以访问,类外可以访问 string name1;protected: // 类內可以访问,类外不可以访问,儿子可以访问 string name2;private: // 类內可以访问,类外不可以访问,儿子不可原创 2021-09-15 00:20:33 · 93 阅读 · 0 评论 -
C++语法(十三)函数重载
就是两个函数名字一样,参数的个数、类型、顺序不一样。比如:void func(int a, double b){ ......}// 个数void func(int a, double b, int c){ ......}// 类型void func(double a, double b){ ......}// 顺序void func(double a, int b){ ......}注意下面也算:void func(int &a){ ......原创 2021-09-14 20:19:41 · 66 阅读 · 0 评论 -
C++语法(十二)函数默认参数
1、第几个参数有默认值,则后面的参数都必须有默认值// 正确的int func1(int a, int b=1, int c=2){ return a+b+c;}// 错误的,c必须要有默认值int func2(int a, int b=1, int c){ return a+b+c;}2、函数的声明和实现中只能有一个有默认参数。// 函数声明int func(int a, int b, int c);// 函数实现,这里的例子是函数实现有默认参数,函数声明没原创 2021-09-13 01:48:49 · 95 阅读 · 0 评论 -
C++语法(十一)引用
引用即给变量起别名,初始化如下:int a = 10;int &b = a;1、改变引用的值,变量也会改变值。2、引用必须要初始化,不能仅仅声明。3、引用一旦初始化后就不能再改变,它的本质是指针常量。比如b已是a的引用,就不能改成c的引用了。 要把赋值操作和更改引用区分开。int &b = a;// 实际上是int* const b = &a;4、在函数中的引用传递void swap1(int *a, int *b){ int tem.原创 2021-09-13 01:23:54 · 185 阅读 · 0 评论 -
C++语法(十)内存模型
C++程序在执行时,将内存大方向划分为四个区域:1、代码区:存放函数体的二进制代码,特点是共享和只读。2、全局区:存放全局变量、静态变量和常量(字符串常量和const修饰的变量)。该区域的数据在程序结束后由操作系统释放。3、栈区:由编译器自动分配和释放,存放函数的参数、局部变量等。4、堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。利用new关键字,在堆区开辟内存。程序在运行前会划分代码区和全局区,运行后才会有栈区和堆区。...原创 2021-09-12 14:58:40 · 60 阅读 · 0 评论 -
C++语法(九)结构体
1、结构体的创建struct Student{ string name; int age;}stu3;int main(){ // 方法一 Student stu1; stu1.name = "zhang"; stu1.age = 10; // 方法二 Student stu2 = {"li", 22}; // 方法三 stu3.name = "wang"; stu3.age = 12;}2、结构.原创 2021-09-11 19:25:39 · 228 阅读 · 0 评论 -
C++语法(八)常量指针和指针常量
1、常量指针指针指向可以修改,指针指向的值不可以改。int a = 10;const int *p = &a;2、指针常量指针指向不可以修改,指针指向的值可以改。int a = 10;int * const p = &a;记忆方法:常量指针和指针常量,一个是指针在后,一个是指针在前。指针常量即指针是常量,所以指针指向不能改,指针指向的值可以改。...原创 2021-09-05 23:40:32 · 307 阅读 · 0 评论 -
C++语法(七)函数的分文件编写
1、main.cpp#include<iostream>#include "swap.h"using namespace std;int main(){ int a = 1; int b = 2; swap(a, b); return 0;}2、swap.h#include<iostream>using namespace std;void swap(int a, int b);3、swap.cpp#include "swap.h"原创 2021-09-05 16:25:21 · 114 阅读 · 0 评论 -
C++语法(六)一维数组与二维数组
一维数组1、定义方式(3种)int arr[3];int arr[3] = {1, 2, 3};int arr[] = {1, 2, 3};2、取地址// 首地址cout << arr << endl;cout << &arr[0] << endl;3、冒泡排序总共用len个数组元素,则要进行len-1轮比较。int arr[] = {4, 2, 1, 3, 9, 5, 7, 8, 6, 0};int len原创 2021-09-05 15:23:30 · 212 阅读 · 0 评论 -
C++语法(五)数据类型
1、整型2、实数型有效数字包括整数部分和小数部分的数字。 小数常量默认是double类型,在小数常量后添加 “f” 默认为float类型。 不管是float还是double,打印台中只显示6个有效数字。 科学计数法,如 3e2 = 3*10^2,3e-2 = 3*0.1^23、 字符型使用单引号 单引号内只能有一个字符 占一个字节 a的ASCII码为97,A的ASCII码为654、转义字符“/t” 制表符是8个空格5、字符串类型// C语言是char..原创 2021-08-25 00:02:50 · 1298 阅读 · 0 评论 -
C++语法(四)标识符的命名规则
1、标识符不能是关键字2、标识符只能由字母、数字和下划线组成3、标识符开头只能是字母或下划线4、标识符区分大小写原创 2021-08-24 20:11:10 · 756 阅读 · 0 评论 -
C++语法(三)string字符串的输入、拼接、删除、查找、截取、比较、遍历
1、字符串的拼接(增加)string a = "123";string b = "456";string c = a + b;cout << c << endl;// 1234562、字符串的删除string str = "ab000";// 只有一个参数,代表删除这个参数到末尾之间的字符串str.eraze(2);cout << str;// abstring str = "ab000";// 有两个参数,代表删除第一个参数开始,删原创 2021-03-08 17:07:27 · 4261 阅读 · 3 评论 -
C++语法(二)string和int、long int、float的转换
int num = 123;string str = to_string(num);cout << str << endl;// 123string str = "123";int num = atoi(str.c_str());cout << num << endl;// 123原创 2021-03-08 16:43:22 · 2142 阅读 · 0 评论 -
C++语法(一)对二维数组进行sort排序
例:已知n个同学的名字和身高,按照身高升序排序,身高相同的,按照名字升序排序。#include<iostream>#include<algorithm>using namespace std;bool cmp(string a[], string b[]){ // 如果身高相同 if(a[0] == b[0]) // 按照名字升序排序 return a[1] <= b[1]; else // 按照身高升序排序 return a[0] <原创 2021-03-02 16:32:30 · 10471 阅读 · 3 评论