初级C++入门

初级C++入门,第1张

文章目录
  • 命名空间
  • C++的输入输出
  • 缺省参数
  • 函数重载
  • 引用
  • 内联函数和宏
  • auto和基于范围的for循环
  • 动态库,静态库浅析

命名空间

防止人多变量也多的大型项目中命名发生冲突

namespace mmp /定义一个命名空间域
{
	int a = 233;
}
  1. 域作用限定符使用命名空间里的东东;
  2. 命名空间域里,支持变量、类型、函数,嵌套定义‘
  3. 同名的命名空间会自动合并,命名空间里不能有命名冲突。
  4. 使用命名空间域里的东西的三种方法:------第一种日常练习不必在意
int main()
{
	printf("%d \n", mmp::a);
	return 0;
}
using namespace std;/标准库的命名空间域 
/1.用起来方便,但把自己的定义暴露出去了,容易造成命名污染

/2.不会污染,但需要指定命名空间里某个具体的东东..
using  mmp::a;

/3.展开常用的,工程项目中常用的...
using std::cin;
using std::endl;

C++的输入输出
  1. endl等价于 \n

  2. 自动识别类型

  3. C++兼容C,哪种输出方便就用哪种。

缺省参数
  1. 参数有个默认值,你不传参数,就用默认的;传了,就没缺省参数什么事儿了。

  2. 灵活运用开辟空间大小:没有传参默认开辟三个类型的大小;传参了就按你的来。

void Mall(int* pa, int cap = 4)
{
	//....

}

int main()
{
	int* a;
	Mall(a,100);
	//int e = add(6);
	//cout << e << endl;
	return 0;
}
  1. 全缺省,不传参的时候,全部都设有默认参数;半缺省,必须按照从右往左来设置默认参数,没有设置默认值的变量,必须传参。
  2. 函数声明的时候设置缺省参数,不能再声明和定义中同时出现。
int add(int a, int b = 10,int c=20)//右向左连续缺省
{

	return a + b + c;
}

int main()
{
	int e = add(6);
	cout << e << endl;
	return 0;
}

函数重载
  1. 参数类型不同 ,个数不同,顺序不同int double/ double int
  2. C++是根据参数的情况,对相同函数名字的函数在编译时进行了修饰。C语言是根据函数名直接找函数,编译器没有办法区别。
int EatFish(int a , int b )
{

	return b - a;
}

int EatFish(int b , double a)
{

	return b ;
}

double EatFish(double a, double b)
{

	return b - a;
}

  1. 链接时做的一些事情,

  2. 有函数声明,编译器在编译时就给过,找函数定义就是跳转过去找函数地址。编译生成汇编代码,同时会生成符号表等等,符号表记录着函数的地址。如果把返回值带进修饰规则,则在编译期层面是可以区分的,但在语法调用时,无法区分,不知你是调用哪一个。inr add( int x )/ flaot add(float x) .....add() ?

  3. 如果用别人的C语言库,需要按C编译器编译,则用extern C 来解决

1.
extern "C"
{
#include "cExample.h"
}
2.
extern "C" double sqrt(double);
3.
extern "C"
{
      double sqrt(double);
      int min(int, int);
}
引用
  1. C++中,引用(reference)是指绑定到内存中的相应对象上。左值引用是绑定到左值对象上;右值引用是绑定到临时对象上。

  2. 这里的左值对象是指可以通过取地址&运算符得到该对象的内存地址;而临时对象是不能用取地址&运算符获取到对象的内存地址。

  3. ++左值是对应(refer to)内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。

  4. 引用---->给变量取别名。函数传参,用引用接受,则在函数内部可以直接改变实参,减少了形参的临时拷贝,面对只需读取的函数,const int&更安全;还可以给指针变量取别名。

  5. 取别名限制条件,对你的读写权限可以不变或者缩小,但不能放大。

  6. 类型转换:当 *** 作符左右两边类型不同,提升至大的类型,提升补符号位,同时有临时变量产生,临时变量具有常性,不可以对临时变量引用取别名,证明临时变量的存在:

  7. 引用该可以做返回值。

    • 返回引用时,要求被返回的参数,要以引用方式或指针方式存在…
    • 返回的参数,出了那个作用域还在。
内联函数和宏
  1. 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。
  2. 空间换时间,对编译器而言是一个建议,当代码很长时,会自动忽略,声明和定义不能分离。
  3. 宏的优缺点?
    优点:
    1.增强代码的复用性。
    2.提高性能。
  4. 缺点:
    1.不方便调试宏。(因为预编译阶段进行了替换)
    2.导致代码可读性差,可维护性差,容易误用。
    3.没有类型安全的检查 。

C++有哪些技术替代宏?1. 常量定义 换用const ;2. 函数定义 换用内联函数

auto和基于范围的for循环
  1. auto 自动推导变量的类型
  2. for 对遍历数组的优化,写起来更省事儿
oid TestFor()
{
 int array[] = { 1, 2, 3, 4, 5 };
 for(auto& e : array)
 e *= 2;
 
 for(auto e : array)
 cout << e << " ";
 
 return 0;
}
  1. 为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。
动态库,静态库浅析



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1325222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存