• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++学习记录1

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码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完成**

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
java与c++的区别发布时间:2022-07-18
下一篇:
【C++】从设计原理来看string类发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap