C++初探

What's C++:
C++是一种静态类型(在编译时执行类型检查,而不是运行时)的、大小写敏感的编程语言,支持过程化编程、面向对象编程和泛型编程。

标准C++的组成部分:

  • 核心库:提供所有的构件块,包括变量、数据类型、常量等;
  • 标准库:提供大量函数,包括字符串操作等;
  • 标准模板库(STL):提供大量方法,用于操作数据结构等。

typedef

  • typedef可以为一个类型取新的名字,定义语法如下:
    typedef type newname;
  • 一个示例如下,程序运行通过,输出5:
#include<iostream>
typedef int first;

using namespace std;

int main()
{
	first a = 5;
	cout << a << endl;

	return 0;
}
局部变量和全局变量
  • 全局变量定义在所有函数之外,通常在程序头部;
  • 局部变量定义在函数内部;
  • 局部变量被定义时,系统不会对其初始化,而会对全局变量执行初始化操作;
常量定义
  • 使用#define预处理器
#define WIDTH 3.0
#define LENGTH 5.0
  • 使用const关键字
const int HEIGHT = 6;
C++存储类
  • 存储类定义程序中变量或函数的范围和生命周期;
  • auto存储类是所有局部变量默认的存储类;
  • 不能对register变量使用取地址“&”运算符,因为它没有内存位置;
  • static存储类在程序的生命周期内都保持变量的存在;
  • extern存储类可以在其他文件中得到已定义的变量或函数的引用;
  • mutable存储类仅适用于类的对象,被它修饰的变量永远处于可变的状态,即使它在一个const中。
C++类
  • 私有的成员和受保护的成员不能使用直接成员访问运算符(.)来访问,公共成员可以:
#include<iostream>
using namespace std;
class Box
{
public:
	double length;
	double width;
	double height;
};

int main()
{
	Box box1, box2;
	double volume = 0.0;

	box1.height = 5.0;
	box1.width = 4.0;
	box1.length = 4.3;
	volume = box1.length * box1.width * box1.height;
	cout << "box1: " << volume << endl;

	box2.height = 4.0;
	box2.width = 3.5;
	box2.length = 3.8;
	volume = box2.height * box2.width * box2.length;
	cout << "box2: " << volume << endl;

	return 0;
}
  • 成员函数可以定义在类定义内部,也可以使用范围解析运算符(::)定义在类外部,类内定义时即使没有inline标识符也被声明为内联的;
  • 如果在类内没有定义拷贝构造函数,编译器会自行定义一个;
  • 类的友元函数定义在类外部,有权访问类所有的私有成员和保护成员,它不是任何类的成员函数;
  • 如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方,对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数;
  • this指针是所有成员函数的隐含参数,友元函数没有this指针,因为友元函数不是类的成员;
  • 访问指向类的指针的成员,需要使用成员访问运算符(->)
  • 无论创建多少个类的对象,类的静态成员都只有一个副本,静态成员在类的所有对象中是共享的,如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零,静态成员在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化:
#include<iostream>
using namespace std;

class Box
{
public:
	static int Objectcount;
	Box(double l = 2.0, double w = 3.0, double h = 4.0)
	{
		length = l;
		width = w;
		height = h;
		//每创建一个对象加一
		++Objectcount;
	}
	double volume(void)
	{
		return length * width * height;
	}
private:
	double length;
	double width;
	double height;
};
//类外初始化静态成员
int Box::Objectcount = 0;

int main()
{
	Box box1(3.0, 3.0, 3.0);
	Box box2(5.0,4.0,3.0);
	cout << "Total numbers of objects: " << Box::Objectcount << endl;

	return 0;
}
  • 静态成员函数只能访问静态数据成员,不能访问其他静态成员函数和类外部的其他函数;
  • 派生类可以访问基类中所有的非私有成员,C++类可以从多个类继承成员;
#include<iostream>
using namespace std;
class Shape 
{
public:
		void setWidth(double w)
		{
			width = w;
		}
		void setLength(double l)
		{
			length = l;
		}
protected:
	double width;
	double length;
};
class PanitCost
{
public:
	double getCost(double area)
	{
		return (40 * area);
	}
};
//派生类
class Rectangle :public Shape, public PanitCost
{
public:
	double getArea(void)
	{
		return width*length;
	}
};
int main()
{
	Rectangle rect;
	rect.setWidth(5.0);
	rect.setLength(6.0);
	double area;
	area = rect.getArea();
	cout << "Panit costs " << rect.getCost(area) << endl;

	return 0;
}
  • 虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数;
  • 纯虚函数没有主体:
// pure virtual function
virtual int area() = 0;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值