C++基础知识学习——1

1、typeid()

运行时获知变量类型名称,可以使用 typeid(变量).name()

2、引用

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。,如下所示,声明了一个变量a为1,再声明一个a的引用b,此时对b做任何修改,a也会发生相同的变化。

int a = 1;
int &b = a;
b = 3;
// 此时a和都是3

// 指针
void swap(int *a, int *b)
{ 
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

// 引用
void swap(int &a, int &b)
{
	int tmp = a; 
	a = b; 
	b = tmp;
}

引用的规则:

  1. 引用被创建的同时必须被初始化,例如 int &a; 就是非法的。
  2. 无NULL引用,引用必须与合法的存储单元关联。
  3. 一旦引用被初始化,就不能改变引用的关系。
类别创建时是否要初始值是否可变能否为NULL其他
指针可以不初始化可变可以有指针的指针
引用必须初始化一旦初始化,不可变不可以无引用的引用

3、C与C++风格的头文件

C的头文件带.h,如:

include <stdio.h> // 输入/输出函数
include <string.h> // 字符串处理
include <stdlib.h> // 内存分配等

C++的头文件带.h,如:

include <iostresm> // 数据流输入输出
include <string> // 字符串类
include <queue> // STL队列容器

4、命名空间

随着可重用代码的增多,各种不同的代码体系中的标识符之间同名的情况就会显著增多。命名空间的作用是为了解决日益严重的名称冲突问题。

#include<iostream> 
using namespace std; //使用std名字空间下的所有变量

int a = 100;

namespace A
{
	int a = 1;
	int b = 2;

	namespace B //名字空间的嵌套
	{
		int c = 3;
		int d = 4;
	}

	namespace B //可以重复定义命名空间,相当于扩充
	{
		int e = 5; 
	}
	
	//namespace E; //错误,不能嵌套声明
}

namespace B
{
	int a = 1;
	int b = 2;
	
	//匿名的名字空间
	namespace
	{
		int c = 3;
	}
}
 
int  main()
{
	cout << a << endl;
	cout << A::a<< endl;
	cout << A::b << endl;
	cout << A::B::c << endl;
	cout << A::B::d << endl;
	cout << B::a << endl;
	cout << B::b << endl;

	//使用A命名空间下,B命名空间的所有变量
	using namespace A::B;
	cout << c << endl;//可直接使用,无需前缀
	cout << d << endl;
	cout << e << endl;

	//如果不加using namespace std,必须加前缀std::cout
	std::cout << "hello!" << endl;

	//命名空间 A::B 的别名other_name 
	namespace other_name = A::B; 
	cout << other_name::e << endl;
	
	//使用匿名的名字空间的变量
	cout << B::c << endl;

	return 0;
}

5、inline

使用inline关键字,目的是为了提高函数的执行效率,用关键字inline放在函数定义(放在声明前面无效)的前面即可将函数指定为内联函数,内联函数通常就是将它在程序中的每个调用点上“内联地”展开。

inline int max(int a, int b)
{
	return a > b ? a : b;
}

在调用 max 函数时,就会直接用函数体来替代。
:应该禁止滥用内联函数,它是以代码膨胀的代价减少函数调用的开销,只有函数体短小简单,才可以让目标代码执行更加高效。

6、C++的类与结构体的区别

类别默认访问级别继承访问级别
成员变量及成员函数的默认访问级别为private默认是public
结构体成员变量及成员函数的默认访问级别为public默认是private
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值