C++基础知识
来源:互联网 发布:道路照度计算软件 编辑:程序博客网 时间:2024/05/29 16:29
1、命名空间
a.为什么要有命名空间?
解决命名冲突问题。
b.怎么定义命名空间?
namespace(关键字)
格式:namespace 命名空间的名字{
//命名空间的成员
//成员可以是函数也可以是变量
} //此处无分号
demo: namespace my_name_sp{
int num;
char ch;
void fun()
{
printf("fun\n");
}
} //此处无分号
c.怎么使用命名空间中的成员?
命名空间名字::访问的成员
demo:my_name_sp::fun();
my_name_sp::num = 10;
d.作用域运算符::
可以指示变量的位置,可以指定访问的变量的位置
1.当全局变量和局部变量重名时,可以使用作用域运算符访问全局变量
::num //访问的全局num
注意:即使支持访问全局变量,但是最好不要有全局变量,即使定义全局变量,也最好不要和局部变量重名。
2.命名空间其实可以理解为自定义的作用域
2、输入输出
a.
C++的输出输入是由对象完成的,在iostream流中有4个对象完成输入输出功能
常用的两个为cin和cout
b.什么是流?
流强调的是,数据是不间断的,有序的
随着时间流逝,数据的输入与输出是有序的
c.cout 标准输出
cout结合输出运算符<<完成输出的功能。
可以做连续的多个输出操作,多个输出时每个输出都要使用<<
可以使用\n(\newline)完成换行功能,也可以使用endl完成换行。(endline)
demo:
cout<<"hello\n";
int a=10; cout<<a;
char *str="hello"; cout<<str;
cout<<str<<"\n";
d.cin 标准输入
cin结合输入运算符>>完成输入的功能。(要有足够的空间)
可以做连续的多个输入操作,多个输出时每个输出都要使用>>
cin不会对数据是否越界做检查
cin遇到空格、换行、回车后会停止工作。
cin.getline(str,sizeof(str));该函数可以获取一行数据,遇到\n停止工作,可以对数据长度做限制,但是不会读取\n
demo:
int num;
cin>>num;
char str[100];
cin>>str;
hello world
3.结构,联合和枚举名可以直接作为类型名
c,C++够着数据类型
C:
struct ,union , enum
struct stu
{
char *name;
int age;
};
struct stu a;
a是变量名,struct stu是类型名
typedef struct stu
{
char *name;
int age;
}STU;
STU <==>struct stu
C++:
stu a;//结构体名作为类型名
对象:编译器为之分配存储空间的变量,a
类: 具有共性的实体的抽象,自定义数据类型,stu;
4.const 修饰符
C++:
a.const修饰的常量,必须要初始化
b.const修饰的常量,其值恒定,任何手段都无法修改,存在文字常量区
c.当对const修饰的常量进行取地址操作符,编译器会在栈区开辟一块新的空间,其值为常量的值。
d.const型的数据不可用普通指针去指向,如果要指向,必须加强制类型转换。
const和指针结合使用:
const 和指针结合时,可以按照优先级分析,分析时,将数据类型去掉,const修饰的是之后所有的数据。
(1).const char *str1;
把类型去掉(const *str1)说明*str1是一个常量,不可变。 str1 是变量,可变。
通常把这种类型的指针叫做:指向常量的指针变量
(2).char *const str2;
把类型去掉(*const str2)说明str2是一个常量,不可变。 *str2 是指针变量,可变。
通常把这种类型的指针叫做:常(量)指针
(3). char const *str3;同(1)是一样的,写法不一样而已。
(4).const char *const str4;
把类型去掉(const *const str4;)说明str4是一个常量,不可变。 *str4 是常指针变量,不可变。
通常把这种类型的指针叫做:指向常量的长指针。
5.内联函数
a.函数调用的过程
void fun(int a)
{}
fun(10);
b.内联函数inline 关键字,可以声明内联函数,内联函数在调用时会进行替换, 没有函数调用过程中的资源消耗,可以代替函数的使用。
注意:
1.内联函数声明不一定有效,只能将函数体较小,且没有递归,循环,以及复杂的选择分支才可能有效。
2.如果一个函数,函数体较小且没有递归,循环,以及复杂的选择分支,调用频繁,即使没有声明为内联函数,编译器会自动加上内联函数。
6.带有缺省的参数的函数
int special(int x=5,float y=5.3);
当进行函数调用时,可以有以下几种形式:
1)special(100,79.8); // x=100,y=79.8
2) special(25); // x=25,y=5.3
3) special(); // x=5,y=5.3
注意:
只能在声明时设置默认参数
缺省参数都必须是从右到左定义,如:
int fun(int i,int j=5,int k);//错误,k未使用
int fun(int i,int j=5,int k=6);//正确,k有使用
•调用时实参对形参的初始化必须是从左向右的
7.函数重载
a.什么是函数重载?
将多个函数使用同一函数名命名的情况就是函数重载。
b.函数重载需要有什么条件?
1.多个函数功能类似时可以考虑使用函数重载。
2.函数参数类型、或者个数、或者二者皆不同,可以使用函数重载。
3.返回值不能作为函数重载的标志
4.函数重载和带缺省参数的函数结合在一起时,要小心使用。
void fun(int a);
void fun(int a,int b=10);
fun(100); //此函数调用无法区分到底掉的哪个函数。
9.强制类型转换
c: (待转换的类型)变量名
c++照常可以使用上述方法。
int a; float b; a=(int )b
a=int(b);
10.new和delete运算符
a.new
1.new在为简单变量分配内存的同时进行初始化
new 数据类型(初值)会返回堆中申请的空间首地址。
如:int *p; p=new int(90);
2.newy运算符可以为数组申请空间
new 数组元素的类型[元素的个数]会返回堆中申请的空间首地址。
int *p = new int[10];
new和malloc的区别:
new在申请内存时可以进行初始化操作。
3.delete
释放空间时,只需delete后加上空间的首地址即可,delete p;
释放数组时格式为delete []q;
11.引用
a.什么是变量?
int a =10;
在内存申请了4个字节的空间其首地址为0x11223344,在这4个字节的内存中存储的值为10,
为了方便访问这块内存,我给它起了个名字叫做a(变量名).
int *p = &a;
b.什么是引用?
引用,就是别名。
int a = 5;
int &b = a; //a就是b,b就是a
c.引用需要注意的内容
1.引用必须要初始化
2.引用可以间接使用
3.引用的对象初始化完成后不可修改。
d.引用有什么用?
1.可以作为函数参数
2.可以作为函数返回值
引用作为函数返回值可以返回全局变量、静态变量、其他生命周期未结束的变量,不可返回局部变量
实质:简化指针操作,提高效率
阅读全文
1 0
- C 基础知识
- C 基础知识
- C基础知识
- C 基础知识
- c基础知识
- c基础知识
- c基础知识
- [C]基础知识
- c基础知识
- C基础知识
- 汇编基础知识 - [C/C++]
- C语言基础知识
- C/C++一些基础知识
- C语言基础知识1
- c语言基础知识
- C语言基础知识
- c语言基础知识回顾
- C一些基础知识
- 使用Speedment实现事务处理
- FST基本操作
- 2014-03-06-codeblock中文乱码
- Java并发学习(四)-sun.misc.Unsafe
- 深度 | 苹果博客解读iPhone上的人脸识别深度神经网络
- C++基础知识
- Java Swing ~01
- elasticsearch mysql增量同步时区问题解决
- Android左右滑动标签页
- hdu-1686-Oulipo(KMP)
- Data Binding(数据绑定)用户指南
- luabind-0.9.1在windows、linux下的使用详解及示例
- RabbitMQ入门教程(七):主题交换机Topics
- OSError: [Errno 98] Address already in use(关键词:flask/bug)