初识C++

本文介绍了C++语言的基础概念,包括C++的增强特性如面向对象的封装、继承和多态,重点讲解了命名空间的使用、using声明、const特性、引用以及数组和指针的相关知识。同时提到了C++与C语言的区别和内联函数、默认参数的作用。
摘要由CSDN通过智能技术生成

01.C++概述(了解)

c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。

02.第一个程序helloworld(掌握)

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;//标准命名空间


int main()
{
	//cout是标准的输出流对象,打印字符串,
	//endl是刷新缓冲区,并换行
	cout << "hello world!" << endl;
	system("pause");
	return EXIT_SUCCESS;
}

03.面向对象的三大特征(了解)

封装、继承、多态

04.命名空间(重点)

1.为什么有命名空间——是因为解决多人合作时取标识符是重命名的问题

2.什么是命名空间

//命名空间
namespace A{//A是空间的名字,
	int a;
	void func()
	{

	}
}

3.命名空间的注意

注意1:命名空间只能写在全局

注意2:命名空间可以嵌套命名空间

//命名空间可以嵌套命名空间

注意3:命名空间是开放,随时可以加入新成员,但是新成员只能在加入后使用

注意4:匿名命名空间

//类似于static int d=50;

注意5:命名空间可以取别名

4.作用域运算符   ::

用来访问某个作用域里面的成员

05.using声明和编译指令(重点)

using声明是让命名空间中某个标识符可以直接使用

常用

namespace A
{
	int a = 10;
	int b = 20;
	int c = 30;
}
void test02()
{
	//using编译指令,让某个命名空间中的标识符都可以直接使用
	using namespace A;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;

	int a = 100;//为什么不会冲突
	//类似于命名空中的a是全局变量,这里的a的局部变量
	cout << "a=" << a << endl;

}

06.struct类型加强(重点)

加强一:定义变量时不需要使用struct

加强二:结构体内可以写函数

07.C/C++的const(重点)

1.C语言的const修饰的变量都有空间

2.C语言的const修饰的全局变量具有外部链接属性

3.C++语言的const修饰的变量有时有空间,有时没有空间(发生常量折叠,且没有对变量进行取址操作)

const int aa = 10;//没有内存

void test01()
{
	//发生了常量折叠
	cout << "aa=" << aa << endl;//在编译阶段,编译器:cout<<"aa="<<10<<endl;

	//禁止优化volatile
	//volatile const int bb = 20;//栈区
	 const int bb = 20;
	int *p = (int*)&bb;//进行了取址操作,所以有空间
	*p = 200;
	cout << "bb=" << bb << endl;//cout << "bb=" << 20 << endl;
	cout << "*p=" << *p << endl;

	cout << "a的地址=" << (int)&bb << endl;
	cout << "p指向的地址" << (int)p << endl;


}

C++编译器经常会优化代码,T~T

尽量用const替代define

​   1.define没有数据类型,const修饰的变量有数据类型,可以进行数据类型检查

08引用(重点难点)

1.引用是做什么:和C语言的指针一样的功能,并且使语法更加简洁

2.引用是什么:引用是给空间取别名

3.引用的语法

void func(int &a)//int &a=a;
{
	a = 200;
}

void test02()
{
	int a = 10;
	func(a);
	cout << "a=" << a << endl;
}

4.引用的本质(了解)  

引用的本质是编译器在内部使用常指针来实现

//发现是引用,转换为 int* const ref = &a;
void testFunc(int& ref){
	ref = 100; // ref是引用,转换为*ref = 100
}
int main(){
	int a = 10;
	int& aRef = a; //自动转换为int* const aRef = &a;这也能说明引用为什么必须初始化
	aRef = 20; //内部发现aRef是引用,自动帮我们转换为: *aRef = 20;
	cout << "a:" << a << endl;
	cout << "aRef:" << aRef << endl;
	testFunc(a);
	return EXIT_SUCCESS;
}

5.引用的注意

注意1:int &b = a;这里&不是取地址操作符,是引用的标记作用
注意2:引用创建时,必须初始化。//int &pRef;err
注意3:引用一旦初始化不能改变它的指向
注意4:引用必须引用一块合法的内存空间

6.数组的引用

int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	//第一种方法(常用)
	//1.定义数组类型
	typedef int(MY_ARR)[5];//数组类型
	//2.建立引用
	MY_ARR &arref = arr;//建立引用,int &b=a;

	//第二种方法(常用)
	//直接定义引用
	int(&arref2)[5] = arr;// int &b=a

	//第三种方法
	typedef int(&MY_ARR3)[5];//建立引用数组类型
	MY_ARR3 arref3 = arr;

	for (int i = 0; i < 5; i++)
	{
		cout << arref[i] << endl;
	}
	cout << endl;
	for (int i = 0; i < 5; i++)
	{
		arref2[i] = 100 + i;
		cout << arref2[i] << endl;
	}

	system("pause");
	return EXIT_SUCCESS;
}

09.指针的引用(重点难点)

1.指针的引用是给指针变量这块空间取别名

void test01()
{
	char* p = "翠花";
	char* &p1 = p;
	cout << p1 << endl;
}

//被调函数
void func(char* &tmp)//char* &tmp=mp;
{
	char *p;
	p=(char*)malloc(64);
	memset(p, 0, 64);
	strcpy(p, "小花");
	tmp = p;//省了*
}
//主调函数
void test02()
{
	char* mp = NULL;
	func(mp);//省了&
	cout << mp << endl;
}

12.C和C++的区别(了解)

1.C语言的结构体不能写函数,C++可以

2.结构体定义变量时,C++不需要加struct关键字

3.更加严格的类型检查

4.const修饰的变量,C++有时没有内存,C语言的都有内存

5.三目运算符返回的值不一样

6.引用和C语言的指针功能一样

13.引用的使用场景(重点)

1.引用作为函数参数

//1.引用作为函数参数
void func(int &a, int &b)
{
	int sum = a + b;
	cout << "sum=" << sum << endl;
}

void test01()
{
	int a = 10;
	int b = 20;
	func(a, b);
}

2.引用作为函数的返回值

static int b = 10;  int &p=b,return p        //注意1:不要返回局部变量的引用,局部变量会随函数结束

func3() = 100;                        //注意2:如果要函数当左值,那么该函数必须返回引用

14.内联函数(了解)

优于宏函数

//在普通函数前面加上inline是向编译器申请成为内联函数
//注意:加inline可能成为内联函数,可能不成为内联函数

15.函数的默认参数(重点)

1.函数的默认参数就是给函数的形参赋值

int myFunc(int a, int b = 0)//int b=0;这就是函数的默认参数,不一定是0
{
	return a + b;
}
void test01()
{
	//函数的默认参数的作用
	//当函数内常要用到形参的某个值,但偶尔要使用其他值
	//增加函数的灵活性
	cout << myFunc(10, 20) << endl;
	cout << myFunc(10)<< endl;
}

//注意:函数的默认参数后面的参数必须都是默认参数(默认参数函数往后放)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值