C++基础知识

基础概念

面向对象的特征

对数据的操作与数据被封装到一起形成一个集合,构成对象。

面向对象的三大特征包括:封装、继承、多态

C++基础
  • main 必须声明为 int 类型
  • 出入的是流对象,头文件需要iostream
  • C++系统预定义了4个用于标准数据流的对象:cin:标准输入,cout:标准输出,cerr:标准错误输出,无缓冲区 clog:标准错误流,有缓冲区
  • endl 为控制符 让光标换行
int a,b,c;
cin>>a>>b>>c;
>cout<<"a+b="<<c;

using namespace std; 只要用到类或者对象都要写

类与对象

包括了:类名、私有部分(对外不可以访问)、公有部分、
每个部分都有成员:变量和函数;其中,私有变量和函数只能够在私有部分的使用。
一般来说类的属性成员都应设置为private, public只留给那些被外界用来调用的函数接口, 但这并非是强制规定.
注意:
类中可以不写private,因为除了注明是公有的部分其它都是私有;(公有就必须写了)
类的定义在class结束后要有分号;
类外定义应该写为:void A::Func() {};就是说void必须写 且写在最前面
类内不能定义自身为对象 例如 A next;
类的成员函数之间可以相互调用;

具有类的类型的变量是对象

在类外调用类里面的变量或者函数需要用类名来调用。
对象具有标识唯一性、分类性、多态性、封装性和模块独立性好

从文件中提取信息

文件名间必须匹配;

> int i;
> ifstream infile("A.txt");
> ofstream outfile("B.txt");
> infile>>i;
> outfile<<i*10;

重载

允许多个函数名相同,但要求其形式参数(函数签名)不同。
函数签名包括:函数名、参数个数、参数类型、参数顺序。但是一般认为必须参数个数 、类型至少有一个不同且函数行为不同。
签名与函数自身类型无关所以不能使用返回值进行重载

函数模板

多个函数参数个数相同,函数行为相同,只是参数类型不相同; 则可以用一个虚拟类型表示所有参数类型。

template<typename T>

函数模板是建立一个通用函数,不指定函数类型和参数类型,而用一个虚拟的类型表示。在调用函数时,用实参的类型取代模板中的虚拟类。
也就是,函数模板就是把需要的函数中之后会写为不同类型的变量用typename 替代具体的类型。

template <typename T>
T max(T a,T b,T c) //用虚拟类型T表示类型
{if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main()
{int i1=8,i2=5,i3=6,i;
double d1=56.9,d2=90.765,d3=43.1,d;
i=max(i1,i2,i3);//使用具体的参数类型进行计算
d=max(d1,d2,d3);
}
二义性:当函数重载与默认参数相撞时,产生错误。

引用

int & a =b; //a是b的别名

  • 引用时必须进行初始化,即确定其引用对象。
  • 引用在使用周期内,不能改变其引用对象
  • 两个变量不能用同一个别名。但一个变量可以有多个别名。
考虑其与指针的区别

引用本身不是数据类型,而指针是数据类型
初始化、可更改性都与指针有区别。

int &n =m;//初始化
n=n-5;//作用在引用上等于作用其本身
引用的具体使用

在函数间进行传值时,实参的值不能通过形参传递,因此使用引用。
常引用变量,不可以修改其值,但是能修改其引用变量的值。
PS: int &a=i+3;应该改为 const int &a=i+3;

int func(int &a,const int &b){
int &a=&b;
const int &b =6const int &b =&a;
}
func(5,10);//使用

内置函数 inline

使用内置函数可以节省程序的运行时间,但增加了目标程序的长度。(空间换时间)
不需要函数声明等提示函数进行跳变,
直接在类内完成定义的函数都是Inline函数。

#include <iostream>
using namespace std;
//定义内置函数
inline int power(int x)
{return x*x;}
int main()
{cout<<power(2)<<endl;
cout<<power(1+1)<<endl;
return 0;
}

字符串变量

C++标准库的string头文件:

#include

赋值:字符串变量= 字符串表达
访问字符串中的字符: C++允许把字符串作为字符数组,第一个字符的下标是0,第二个字符的下标是1,以此类推
字符串连接运算:字符串1 + 字符串
字符串的比较运算: 可以用关系运算符>、>=、==、!=、<、<=对两个字符串同一位置的字符进行比较,根据ASCII码值判定字符的大小。

int main( )
{
string str1;
string str2 = “chen”;
str1 = str2;
str1[1] = 'x';
return 0;}

动态分配 new | delete

给指针、数组的定义需要空间。
注意:当且仅当 delete才能够释放空间

type *p = new type [数组维数n]或(初值v)

数组维数n是分配n个类型大小的空间——[]内装空间大小,
初值v用来初始化分配的内存.——()内装初始值

int *p;
p= new int(100);//100是赋给p的值
char *q=new char[20];//20是q的数组大小
delete []q;
delete p;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值