C++学习记录1
代码1:转义字符
点击查看代码
#include<iostream>
using namespace std;
void test01()//换行
{
cout << "Hello World" << endl;
//等价于cout << "Hello World\n" << endl;
}
void test02()//反斜杠
{
cout<<"\\"<<endl;
//打入两个反斜杠才输出一个反斜杠
}
void test03()//水平制表符\t
{
//cout << "1111aaa\tHelloWorld" << endl;
//\t占8个空格 主要是为了整齐的输出其后面的内容
cout << "111aaa\thelloworld" << endl;
cout << "111a\thelloworld" << endl;
cout << "111aa\thelloworld" << endl;
//
cout << "111aaa helloworld" << endl;
cout << "111a helloworld" << endl;
cout << "111aa helloworld" << endl;
//没有\t并不会自动对齐
}
int main()
{
test03();
system("pause");
return 0;
}
代码2:字符串类型
点击查看代码
//字符串型
//C语言的形式:char 变量名字[] = "字符串值";
//C++的形式:string 变量名字 = "字符串值";
#include<iostream>
using namespace std;
//#include<string>
int main()
{
char str[] = "Hello World";
cout << str << endl;
string arr = "Hello World";
//包含头文件
cout << arr << endl;
return 0;
}
代码3:布尔类型
点击查看代码
<details>
<summary>点击查看代码</summary>
include
using namespace std;
int main()
{
bool flag = true;
cout << flag << endl;
//结果为1
flag = false;
cout << flag << endl;
//结果为0
cout << sizeof(bool) << endl;
//bool所占内存空间:1个字节大小
return 0;
}
</details>
//布尔类型只要是非0的值都代表是真
代码4:取模运算
//两个整数相除结果依然为整数
//两个小数是可以相除的
//运算结果也可以为小数
//两个数相除 除数不可以为0
点击查看代码
#include<iostream>
using namespace std;
int main()
{
//取模
cout << 10 % 20 << endl;//10
cout << 10 % 3 << endl;//1
cout << 10 % 0 << endl;//10不可以除以0
//cout << 1.1 % 2.1 << endl;//两个小数是不可以进行取模运算的
return 0;
}
//只有整型变量才可以进行取模运算
代码5:随机数
点击查看代码
#include<iostream>
using namespace std;
//#include<ctime>
int main()
{
//添加随机数种子
//利用当前系统的时间去生成随机数 防止每一次随机数都一样
srand((unsigned int)time(NULL));
int num1 = rand() % 100;//产生0到99
int num2 = rand() % 100 + 1;//产生1到100
int num3 = 0;
for (int i = 1;1; i++)
{
cin >> num3;
if (num3 > num1)
{
cout << "猜大了" << endl;
}
else if (num3 < num1)
{
cout << "猜小了" << endl;
}
else
{
cout << "猜对了" << endl;
break;
}
}
return 0;
}
// srand((unsigned int)time(NULL));随机数种子
代码6:成员变量和成员函数分开存储
只有非静态的成员变量才属于类的对象上
点击查看代码
#include<iostream>
using namespace std;
//成员变量 和 成员函数 是分开存储的
class Person
{
int m_A;//非静态的成员变量 - 属于类的对象上
static int m_B;//静态成员变量 - 不属于类的对象上
void func(){}//非静态的成员函数 - 不属于类的对象上
static void funcc(){} //静态成员函数 - 不属于类的对象上
};
int Person::m_B = 190;
void test01()
{
Person p1;
//空对象 占用的内存空间为:1
cout << sizeof(p1) << endl;//1
//每个空对象也应该有一个独一无二的内存空间地址
}
void test02()
{
Person p1;
cout << sizeof(p1) << endl;//4
}
int main()
{
//只有非静态的成员变量才属于类的对象上
test02();
return 0;
}
代码7:this指针
:可以解决名称冲突
可以返回对象本身使用*this
点击查看代码
#include<iostream>
using namespace std;
class Person
{
public:
Person(int age)
{
//this指针
//this指针指向 被调用的成员函数 所属的对象
this->age = age;
}
//Person PersonAddAge(Person& p) 以值的方式去返回
Person& PersonAddAge(Person& p)
{
this->age += p.age;
//this指向的就是p2的指针 那么*this就是指向的p2这个对象本体
return *this;
//返回本体需要使用引用的方式
}
int age;
};
//解决名称冲突
void test01()
{
Person p1(190);
cout << p1.age << endl;
}
//返回对象本身使用*this
void test02()
{
Person p1(190);
Person p2(191);
//p2.PersonAddAge(p1);
Person p3(1);
p2.PersonAddAge(p1).PersonAddAge(p3).PersonAddAge(p3);
//链式编程思想
cout << p2.age << endl;
}
int main()
{
test02();
//190+191=381
return 0;
}
代码8:空指针访问成员函数
点击查看代码
#include<iostream>
using namespace std;
//空指针访问成员函数
class Person
{
public:
void ShowAge()
{
cout << "Age" << endl;
}
void Showage()
{
if (this == NULL)
{
return;
}
//cout << m_Age << endl;
//传入的指针是为空的(NULL)
cout << this->m_Age << endl;
}
int m_Age;
};
void test01()
{
Person* p = NULL;
//p->ShowAge();
p->Showage();
}
int main()
{
test01();
return 0;
}
代码9:
const修饰成员函数
首先 常函数:
点击查看代码
#include<iostream>
using namespace std;
class Person
{
public:
//this指针的本质就是:指针常量
//指针常量 是常量 不是指针 指针的指向是不可以修改的
void showPerson() const//常函数
{
m_B = 191;
this->m_B = 190;//未报错
//因为 this指针的本质可以表示为:Person* const this;是一个指针常量 在Person*前面在加一个const
//const Person* const this; 就是对应得值也不可以修改了 等价于我们在成员函数后面加const
//所以说在成员函数后面加const 修饰的就是this指针 让指针指向的值也不可以修改
//m_A = 100;
// 等价于this->m_A = 100;
//this = NULL;//this指针是不可以修改指针的指向的
//不想被修改值 需要在函数名字后面加const
}
int m_A;
mutable int m_B;//可以在常函数当中修改成员变量的值
};
//在成员函数后面加上const 该函数称为常函数
//常函数内部是不可以修改成员属性的
//成员属性声明的时候加关键字mutable之后 可以在常函数当中修改
void test01()
{
Person p;
p.showPerson();
}
//在声明对象的前面加上const 这个对象叫做常对象
//常对象只可以调用常函数
int main()
{
test01();
return 0;
}
其次 常对象
点击查看代码
#include<iostream>
using namespace std;
class Person
{
public:
void func()
{
m_A = 1;
}
//this指针的本质就是:指针常量
//指针常量 是常量 不是指针 指针的指向是不可以修改的
void showPerson() const//常函数
{
m_B = 191;
this->m_B = 190;//未报错
//因为 this指针的本质可以表示为:Person* const this;是一个指针常量 在Person*前面在加一个const
//const Person* const this; 就是对应得值也不可以修改了 等价于我们在成员函数后面加const
//所以说在成员函数后面加const 修饰的就是this指针 让指针指向的值也不可以修改
//m_A = 100;
// 等价于this->m_A = 100;
//this = NULL;//this指针是不可以修改指针的指向的
//不想被修改值 需要在函数名字后面加const
}
int m_A;
mutable int m_B;//可以在常函数当中修改成员变量的值
};
//在成员函数后面加上const 该函数称为常函数
//常函数内部是不可以修改成员属性的
//成员属性声明的时候加关键字mutable之后 可以在常函数当中修改
void test01()
{
Person p;
p.showPerson();
}
//在声明对象的前面加上const 这个对象叫做常对象
//常对象只可以调用常函数
void test02()
{
const Person p; //在对象的前面 加上 const 变为常对象
//依然不允许修改指针指向的值
//p.m_A = 100;//no
p.m_B = 190;//yes
//m_B 是特殊值 在常对象下面也可以修改
//常对象只可以调用常函数
p.showPerson();
//p.func();
//常对象 不可以调用普通的成员函数 因为普通的成员函数是可以修改属性的
}
int main()
{
test01();
return 0;
}
**最后 today完成**
C++学习记录1的更多相关文章
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
- UWP学习记录7-设计和UI之控件和模式4
UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
- UWP学习记录6-设计和UI之控件和模式3
UWP学习记录6-设计和UI之控件和模式3 1.按钮 按钮,响应用户输入和引发 Click 事件的控件. 使用<Button>就能创建一个按钮控件了.按钮是 ContentControl, ...
随机推荐
- SpringBoot中异常处理
一.背景 在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢? 二.需求 1.拦截系统中部分异常,返回自定义的响应. 比如: 系统发生HttpRequestMetho ...
- 4 个超实用的 Linux 监控工具
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 下面是 Linux 下 4 个日常使用率非常高的监控工具,可以帮助我们准确快速的诊断系统问题. 1. iotop 如果你想知 ...
- 一文带你速懂虚拟化KVM和XEN
来源 :蛋蛋团 前言 "云计算"这个技术经过十余年的普及到如今已经可以称得上是家喻户晓了,基于云计算平台,在多个领域内创造了一个又一个的记录:电子商务里亿万人同时在线抢购的的&qu ...
- .net 关于Task.Run 和 Async await的执行顺序
一直捋不清楚用Task.Run异步的执行关系,网上找的些说明写得也有点复杂,所以自己做实验测一下. 直接上代码 这个是加await private static void TestFun() { Co ...
- CSS常用技术
1.处理图片底部 5px 间距 <style> body {background: #2d97db;} .imgBox { background: #fff; font-size: 0; ...
- 解决mysq服务无法正常启动问题
在mysql的启动过程中,遇到什么问题都可以反馈给我,我都会尽力帮你们解决 第一种:通过net start mysql启动MySQL服务器时,出现以下信息 是因为在MySQL5.7以上的版本中默认的没 ...
- 893. Groups of Special-Equivalent Strings - LeetCode
Question 893. Groups of Special-Equivalent Strings Solution 题目大意: AB两个字符串相等的条件是:A中偶数位出现的字符与B中偶数位出现的字 ...
- 443. String Compression - LeetCode
Question 443. String Compression Solution 题目大意:把一个有序数组压缩, 思路:遍历数组 Java实现: public int compress(char[] ...
- 奶盖拌饭 NKOJ8457
题意:一个无向图,每次询问给出一条边,问这条边的最大值满足这条边一定在这个图的最小生成树上,如果没有上限输出-1. 思路:考场上想过的,将分为两类,(非)树边. 1.亿点性质 非树边:加上这条边所构成 ...
- 攻防世界pwn题:forgot
0x00:查看文件信息 该文件是32位的,canary和PIE保护机制没开. 0x01:用IDA进行静态分析 总览: 该函数就是:v5初值为1,对v2输入一串字符.然后执行一个会根据输入的字符串而修改 ...