LInux C++学习day01 C++语言概述 第一个C++程序 名字空间(namespace) C++的结构体、联合体和枚举 字符串

标准C++语言、QT框架

《C++程序设计原理与实践》
《C++Primer》

一 C++语言概述
1 历史背景
1)C++江湖地位
java、C、C++
2)C++之父,Bjarne Stroustrup(1950–)
1979,Cpre,为C语言增加了类的机制
1983,C with Class(带类的C),后来称为C++
1985,CFront1.0 《The C++ Programming Language》
3)C++发展过程
1987,GNU C++
1990,Borland C++
1992,Microsoft C++(VC、VC++),IBM C++
1998,ISO C++98
2003,ISO C++03
2011,ISO C++11/C++0x
2014,ISO C++14
2017,ISO C++17
*2020,ISO C++20

2 应用领域
1)游戏开发
2)科学计算
3)网络和分布式应用
4)操作系统和设备驱动
5)其它…

3 C和C++
1)都是编译型语言
2)都是强类型语言,但是C++更强
3)C++去除了C语言中一些不好的特性
4)C++增加了很多C语言没有的好的特性,比C语言更适合做大规模程序的开发

二 第一个C++程序
1 编译方式
1) gcc xx.cpp -lstdc++
2) g++ xx.cpp //推荐
2 文件扩展名
1) .cpp //推荐
2) .cc
3) .cxx
4) .C
3 头文件
#include //C++头文件
#include <stdio.h> //C头文件
#include //stdio.h的替换写法

#include <string.h> ==> #include
#include <stdlib.h> ==> #include

4 标准输入和输出
1)使用cin对象表示标准输入//类似scanf
int num;
scanf("%d",&num);//C中
cin >> num;//C++中
注:“>>”表示输入操作,称为输入操作符
---------------------------------
int i,double d;
scanf("%d%lf",&i,&d);//C中
cin >> i >> d;//C++中

2)使用cout对象表示标准输出//类似printf
int num = 100;
printf("%d\n",num);//C中
cout << num << endl;//C++中
注:"<<“表示输出操作,被称为输出操作符
注:endl表示换行,和”\n"等价

 int i = 123,double d = 4.56;
 printf("%d,%lf\n",i,d);//C中
 cout << i  << ','  << d << endl;//C++中

三 名字空间(namespace)
1 基本概念
1)名字空间也成为命名空间,表示一个作用域
2)定义在名字空间中的实体被称为名字空间的成员

2 名字空间作用
1)避免名字冲突
2)划分逻辑单元

3 名字空间语法
1)定义
namespace 名字空间名{
名字空间的成员1;
名字空间的成员2;

}
注:名字空间的成员可以是全局函数、全局变量、类型、名字空间
2)使用
–》通过作用域限定操作符 “::”
空间名::要访问的成员

–》名字空间指令
using namespace 空间名;
在该条指令以后的代码中,指定的名字空间成员都可以见,可以直接访问,而省略"空间名::".

–》名字空间声明(using声明)
using 空间名::名字空间成员;
将名字空间中特定一个成员引入到当前声明的作用域中,在该作用域中访问这个成员就如同是访问自己的局部成员一样,可以直接访问,而省略"空间名::".

4 全局作用域和无名名字空间
1)没有放在任何名字空间的成员,属于全局作用域,可以直接访问,如果和局部成员名字一样,将优先访问局部成员,如果这时还希望访问全局作用域的成员,可以通过"::成员".
2)定义名字空间时没有名字,即为无名(匿名)名字空间,无名空间里面的成员和全局作用域的成员类型,也可以直接访问,但是无名空间的成员将被限制在当前文件中使用.

5 名字空间嵌套//了解
eg:
namespace ns1{
int num = 100;
namespace ns2{
int num = 200;
namespace ns3{
int num = 300;
}
}
}
cout << ns1::num << endl;//100
cout << ns1::ns2::num << endl;//200
cout << ns1::ns2::ns3::num << endl;//300

四 C++的结构体、联合体和枚举
1 结构体
1)定义结构体变量时可以省略struct关键字
2)在C++的结构体中可以直接定义函数,称为成员函数,在成员函数中可以访问结构体中的其它成员。

2 联合体//了解
1)定义联合体变量时,可以省略union关键字
2)支持匿名联合

3 枚举
1)定义枚举类型变量时,可以省略enum关键字
2)C++中枚举被看做是一种独立数据类型,不能直接当做整型数使用。
enum STATE = {SLEEP,RUN,STOP};
STATE s;
s = 2;//C:ok C++:error
s = STOP;//C:ok c++:ok

五 字符串
1 回顾C语言中字符串
1)字符指针 char*
2)字符数组 char[]
3)字面值常量 “…”

2 C++兼容C中字符串的同时,增加string类型,专门表示字符串。
1)定义字符串
string s;//定义空字符串
string s = “hello”;//定义同时初始化
---------------
string s(“hello”);//本质和上面等价
string s = string(“hello”);//本质和上面等价
2)字符串拷贝 =
string s1 = “abcdef”;
string s2 = “wangjianli”;
s1 = s2;//拷贝
3)字符串连接 + +=
string s1 = “hello”;
string s2 = “world”;
string s3 = s1 + s2;
cout << s3 << endl;//“helloworld”
4)字符串比较 == != > < >= <=
if(s1 == s2){}
if(s1 > s2) {}
5)随机访问: []
string s = “hello”;
s[0] = ‘H’;
cout << s << endl;//Hello
6)常用的成员函数
size();//获取字符串的长度
length();//和size()函数等价
string s = “hello”;
cout << s.size() << endl;//5
cout << s.length() << endl;//5

c_str();//返回C风格的字符串(const char*)

void func(const char* str){}
int main(void){
	string s = "..";
	func(s.c_str());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值