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, ...
随机推荐
- stm32F103RCT6使用FFT运算分析波形详解(非常新手)
最近学校电赛院队招新,出的招新题就是低频示波器的.之前一直没有弄懂FFT,借着这次机会实现了一下. FFT原理详解 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号,然后对信号进行分析 ...
- [笔记] 有向无环图 DAG
最小链覆盖 (最长反链) 最小链覆盖 \(=n-\) 最大匹配. 考虑首先每个点自成一条链,此时恰好有 \(n\) 条链,最终答案一定是合并(首尾相接)若干条链形成的. 将两点匹配的含义其实就是将链合 ...
- [题解] trip
题目大意 给定一颗大小为 \(N\) 的树, \(1\)的度数不小于 \(2\) .每个点有一个颜色,要么为黑色要么为白色. 从 \(1\) 号点开始游走,计数器初始为 \(0\). 如果当前为黑点计 ...
- vue - vue基础/vue核心内容(终结篇)
今天是vue基础.vue核心内容第三天,也是最后一天,后面开始进入组件化学习,整个基础内容以生命周期的结束而结束,不得不说,张天禹把这节课讲活了,开始觉得vue是一个有生命的东西,包括前面所说的很多脏 ...
- SICP 2.2: 层次性数据和闭包性质(Python实现)
绪论 序对可以为我们提供用于构造复合数据的基本"粘接剂",鉴于Python中tuple中元素不可变的性质,我们通过list来实现序对,如[1, 2].Python的PyListOb ...
- CTFHub-HTTP协议五关刷题解答
CTFHub 开箱即用的CTF学习解决方案 地址:https://www.ctfhub.com/#/skilltree 本次解答一共包括五关,没有先后顺序. 1.技能树一:请求方式 题目描述 打开后得 ...
- Yaml中特殊符号"| > |+ |-"的作用
"|",保留每行尾部的换行符\n. ">",删除每行尾部的换行符\n,则看似多行文本,则在程序中会将其视为一行. include_newlines: | ...
- ExtJS 布局-Table布局(Table layout)
更新记录: 2022年6月1日 开始. 2022年6月10日 发布. 1.说明 table布局类似表格,通过指定行列数实现布局. 2.设置布局方法 在父容器中指定 layout: 'table' la ...
- JS:相等判断
1.= 赋值运算符 错误写法:a+b = c; 2.== :=== ==判断值是否相等 例: var a = 2; var b = 3; var c = a+b; var d = "2&q ...
- ASP.NET MVC之models_list传值view
单个用户在查看个人信息时,一个model就能解决 但是如果是管理员,就需要查看多个用户,此时我们从数据库读一页的用户数据(大致十条) 此时返回的就可能是一个泛型列表 所以除了基本的用户model外(比 ...