1.C++相对C的特性:
C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代。由于它的设计有很多优点,多年以来深受广大程序设计人员的喜爱,并逐渐淘汰了很多其它程序设计语言。我们平时使用的大多数软件都是用C语言开发的。C语言作为程序化的开发语言,适合处理小规模的程序,对于大规模程序,C语言并不适合。
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”, “CPP”。它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
2.命名空间
命名空间是一个声明性区域,为其内部的标识符(类型、函数和变量等的名称)提供一个范围。命名空间用于将代码组织到逻辑组中,还可用于避免名称冲突,尤其是在基本代码包括多个库时。命名空间范围内的所有标识符彼此可见,而没有任何限制。命名空间之外的标识符可通过使用每个标识符的完全限定名来访问成员,也可通过单个标识符的using声明(using std ::string)或命名空间中所有标识符的using指令(using namespace std; )来访问成员。头文件中的代码应始终使用完全限定的命名空间名称。
1.命名空间用于解决符号名称冲突的方法;
2.一个命名空间可以取多个别名,使用别名和原先名字无任何区别;
3.匿名命名空间:定义自己的命名空间时不需要取名字,可以直接使用里面的函数或变量,但只在当前文件内生效;
#include <iostream>
#include <cstdio>
// 第一个命名空间
namespace first_space{
void func(){
printf("hello world\n");
}
}
// 第二个命名空间
namespace second_space{
void func(){
printf("你好!");
}
}
int main ()
{
// 调用第一个命名空间中的函数
first_space::func();
// 调用第二个命名空间中的函数
second_space::func();
return 0;
}
3.输入与输出
C++标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论C++编程中最基本和最常见的VO操作。C++的IO发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。头文件<iostream>,该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
标准输出流(cout):
#include <iostream>
using namespace std;
int main( )
{
char str[] = "Hello world";
cout << "Value of str is : " << str << endl;
}
标准输(cin):
#include <iostream>
using namespace std;
int main( )
{
int num;
cout << "请输入一个数: ";
cin >> num;
cout << "num = " << name << endl;
}
4.C++中的函数
1.带默认值的函数
2.带占位参数的函数
3.函数重载
#include <iostream>
using namespace std;
void show(int a)
{
cout << "a = " << a << endl;
}
void show(string str)
{
cout << "str = " << str <<endl;
}
int main(int argc, const char *argv[])
{
show("asddasd wadasd asda");
show(1332);
show("asakd wew, ck");
return 0;
}
5.C++引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
- 引用返回,函数可以做左值,也可以做右值
#include <iostream>
using namespace std;
void myswap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int &get()
{
static int a=1001;
return a;
}
int main(int argc, const char *argv[])
{
int a=10;
int b=20;
int &p=a;
p=1313;
cout<< "a = " << a << endl;
myswap(a,b);
cout<< "a = " << a << endl;
cout<< "b = " << b << endl;
int &c=get();
get()=123;
cout << c << endl;
return 0;
}
6.new与delete
new:申请内存并初始化对象
delete:释放内存并销毁对象
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, const char *argv[])
{
int *p = (int *)malloc(sizeof(int *));
*p = 1321;
cout << "*p = " << *p <<endl;
free(p);
int *q = new int;
*q=212;
cout << "*q = " << *q << endl;
delete q;
int *arr = new int[5]{10, 12, 34, 345, 90};
for(int i = 0; i < 5; i++ )
{
cout << arr[i] << " " ;
}
cout << endl;
delete []arr;
return 0;
}
new/delete与malloc/free的区别: