c++语法小结

本文详细介绍了C++中的关键概念,如命名空间用于区分同名,构造函数和析构函数的作用与调用,newdelete与mallocfree的区别,静态与常量成员,拷贝构造函数和引用,缺省函数与友元功能。还涵盖了继承、多态以及各种设计模式的应用。
摘要由CSDN通过智能技术生成


命名空间

防止同名:
 只是用于区别同名函数和同名全局变量(编译时,在链接阶段,找定义时用到)
 比如一个大型项目中,分不同模块,由不同的人写,则可能出现同名函数或同名全局变量

构造函数 析构函数 初始化列表 构造函数的隐式调用

构造函数:是对象申请内存空间之后自动调用的函数(类似于c中的变量的定义)
 没有返回值 类名
析构函数:是对象的内存空间被销毁前自动调用的函数
 没有返回值 ~类名 参数列表为空

类名::类名(参数1,参数2,…)
  :类成员(参数1),类成员(参数2) {
  …
  }

同一个类中可以有多个参数列表不同的构造函数(函数重载
当且仅当一个类中没有声明构造函数时,编译器会自成一个无参无内容的构造函数(缺省函数

在构造函数只有一个参数时,就可能出现构造函数的隐式调用现象(实际上是为了让c++的对象可以像c一样,用 容器 = 值 的形式)
 例:Stu s1 = “Tom” (隐式调用构造函数 Stu s1(“Tom”))
 在构造函数声明前加上explicit关键字,可禁止构造函数的隐式调用

new delete 和 malloc free

c++中的new,delete和c中malloc,free区别:
 malloc,free是函数,而new,delete是关键字或者说是表达式
 在new和delete对象时,会调用构造或析构函数

Stu *p = new Stu();
delete p;

Stu *p = new Stu[5]; //此时会调用无参的构造函数
delete []p;

静态成员 常量成员

静态成员:
 属于整个类的属性或行为,而非属于某个对象的
 在定义类时,静态成员变量一定要定义
 静态成员函数,本质上没有this指针

常量成员:
 常量成员函数,本质上this指针为常量指针

拷贝构造函数 引用

引用:
 本质是对象的别名,作用其实相当于c中的指针
 不新建对象,可在传递函数参数时,避免调用构造函数
 初始化时必须绑定,且一经绑定无法解除
 变量(c的结构)只能用指针,对象(c++特有的结构)大多用引用

拷贝构造函数:
 用一个对象,创建另一个对象时
 类似于c的变量的值传递,它是为了解决对象的值传递
 唯一的形参必须是构造对象的引用
 调用:在创建对象时调用,否则可能调用赋值运算函数
  1. 对象作为函数参数(值传递)
  2. 对象作为函数返回值(值传递)
  3. 用一个对象给另一个对象初始化

缺省函数

在定义类时,如果没有显式写出这些函数,编译器在编译代码时,会自动生成这些缺省函数

  1. 无参的构造函数
  2. 无参的析构函数
  3. 带一个参数的拷贝构造函数
  4. 带一个参数的赋值运算函数

其形式大致如下:

	// 构造函数
	A(){}
	
	// 带一个参数的拷贝构造函数
	A(const A& a)
	{
	   // 这儿调用了赋值重载函数
	   *this = a;
	}

	// 析构函数
	~A(){}

	// 重载赋值操作符
	A& operator =(const A& a)
	{
	    // 这个地方可能有点不当,只是为了表明这是一个浅拷贝
	    memcpy(this, &a, sizeof(A));
	    return *this;
	}

友元函数和友元类

可以直接访问其非共有成员

例:
friend Complex add(const Complex& other1,const Complex& other2);
friend Class Stu;

函数重载 默认参数

为了提高复用性:
 函数重载:多个的函数名相同;参数不同(参数的参数,参数的类型),函数实现方式不同
 函数模板:参数类型不同,函数实现方式相同
 回调函数:函数实现方式不同,参数和返回值相同(一个回调指针指向多个回调函数)

默认参数和函数重载可能会出现二义性问题,例void fun()和void fun(int i=0)

函数模板

特化
template<typename T>
bool isEqual(T i, T j);

template<typename T>
bool isEqual(T i, T j) {
	
	return i == j;
}

template<>
bool isEqual<char*>(char *i, char *j) {
	
	return strcmp(i, j) == 0;
}
偏特化

类模板

特化
偏特化
类模板做出的五大容器,参见...

封装

继承

三种继承方式
多继承
菱形继承
	虚继承

多态

虚函数
纯虚函数、抽象类
基类指针

设计模式

单例模式
工厂模式
观察者模式
策略模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值