新手适合的c++基础

C++的形式参数和实际参数
形式参数:
比如函数:

void say(int a,int b){
if(a>b) cout<<"I am a boy !";
else cout<<"I am a girl !";
}

在这里函数名字后面的括号中的a和b都是形式参数。形参只有在函数在被调用时才会为期分配内存空间,调用结束后,会立即释放形参的内存单元。
形参只在函数内部有用。
实际参数:
先写的例子:

void say(int a,int b){
if(a>b) cout<<"I am a boy !";
else cout<<"I am a girl !";
int main(){
void say(int a,int b);//函数声明
say(12,13);
}

这里在主函数中,给say函数中a,b赋值为12,13,这里的12.13便是实际参数。
实际参数不止是常量,还可能是变量,表达式,函数等,这些实际变量在进行函数调用的时候都必须压油确定的值,所以需要先赋值后操作。
C++参数传递类型
1、值传递:
传递数值,调用函数时,给形参分配完内存单元,然后实参的值传递给形式参数,*形参的值改变不会影响实参!*函数结束后形参被释放,实参未改变。这种是单向传递。
2、传递地址:
也就是说向形参传递实参的地址。这种情况下实参的值会发生改变。此时,形参和实参指向同一块内存地址,也就是说两者是
这种是双向传递。
C++函数重载
函数重载是指在同一作用域内,允许存在,函数名相同,但参数列表不同的函数,这样的函数就是重载函数,他们功能显示,但是避免了名字空间的污染。
最简单的:std::cout、std::cin;
重载的作用:
函数重载在一个作用域内,
没有大量的函数名字,减少函数名字污染
使用函数重载可以极大的减少代码量,增加代码的可读性。
重载规则:
1、函数名必须相同。
2、参数列表必须不同(参数个数,参数类型,参数的顺序)
3、函数的返回值类型不做要求,但是仅仅是返回值类型不同的一组函数,不是重载函数。
函数重载可以是普通函数,也可以是成员函数,也可以是构造函数,但是绝对不能是析构函数。
函数重载是一种静态多态!
C++虚函数
虚函数是在积累中使用virtual声明的函数,在派生类中重新定义积累中定义的虚函数时会告诉编译器不要静态链接到该函数。在程序中如果想在任一点根据所调用的对象类型来选择调用的函数,这就是动态链接。或者后期绑定。
C++还有种函数类型叫做纯虚函数。纯虚函数的声明:

virtual void function()=0;

纯虚函数没有定义,一定没有。
菜鸟教程上面的一句话说的很好,虚函数可以不实现(定义),不实现(定义)的虚函数叫做纯虚函数。
C++多态:
C++中有两种多态形式:1、静态多态(编译时的多态,在编译器还在编译的时候就完成了,编译器根据实际的参数类型,主动调节调用不同的函数。)2、动态多态
1、静态多态:
编译时的多态,在编译器还在编译的时候就完成了,编译器根据实际的参数类型,主动调节调用不同的函数。
两种形式:函数重载;函数模板;
2、动态多态
动态多态也就是运行时的多态,在程序执行期间根据实际情况调用不同的函数;主要是根据,传递的参数类型,来确定调用的那个函数。
C++的类和对象
类的形式

class 类名
{
	public:
	类成员,类成员函数;
	private:
	类成员,类成员函数;
	protected:
	类成员,类成员函数;
}

对于类中的public类型的成员可以使用访问运算符(.)来进行访问;

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
};
 
int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   Box Box2;        // 声明 Box2,类型为 Box
   double volume = 0.0;     // 用于存储体积
 
   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; (https://www.runoob.com/cplusplus/cpp-classes-objects.html)
   Box1.breadth = 7.0;
 
   // box 2 详述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
 
   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的体积:" << volume <<endl;
 
   // box 2 的体积
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Box2 的体积:" << volume <<endl;
   return 0;
}

转载自----->菜鸟教程
c++的类构造函数第累的一种特殊成员函数,他会在每次创建新的类对象的时执行。构造函数可以重载。构造函数的名称与类的名称完全相同,并且没有返回类型构造函数主要是给类中的成员变量赋初值。
类的析构函数,析构函数是一种特殊的成员函数,在每次的删除对象操作中执行。析构函数的名称是~类名和构造函数一样没有返回值。但是析构函数没有参数。
类的友元函数,定义在类的外部,但是有权访问累的所有私有成员,和保护成员,使用关键字friend修饰
例子:

class Car{
private:
double width;
public:
double weight;
friend void display(Car car);
void setWeight(){}
}
void display(Car car){
cout<<"i am a car"<<endl;
}
int main(){
Car car;
display(car);
return 0;
}

关于友元类这里不做讲解
C++派生类与基类的指针问题
C++中基类指针和引用可以指向派生类对象,但是派生类对象不能将指针和引用指向基类。
写段代码解释下。
class person{
String name;//人的名字
}
class student{
String num;//学生学号。
}
这时如果我们new一个指针
person *p=new student();
*p是可以指向name内存地址。但是person里面没有num所以不能指向num;
如果我们new一个
student *stu=new person();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值