【一天从C到C++】基础篇

这篇博客介绍了C++的基础知识,包括快速入门、数据类型、字符串和引用。接着深入讲解C++的面向对象特性,如类、属性、方法、对象、访问限制、构造函数、析构函数、友元、内联函数、this指针、静态成员、静态成员函数。此外,还涵盖了继承、函数重载和运算符重载、多态、数据抽象和封装、接口(抽象类)等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

快速入门

Hello C++

数据类型

字符串

引用

C++面向对象

类、属性、方法、对象

类的访问限制

类的构造函数和析构函数

友元

内联函数

this指针

类静态成员

类静态成员函数

继承

函数重载和运算符重载

多态

数据抽象和封装

接口(抽象类)


快速入门

Hello C++

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,因此要使用

using namespace std;

输出使用cout

#include <iostream>
using namespace std;
int main()
{
	cout << "hello C++" << endl;
	return 0;
}

 输入用cin

#include <iostream>
using namespace std;
int main()
{
	int a;
	cin >> a;
	cout << a << endl;
	return 0;
}

此外,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出。

数据类型

布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型

wchar_t

 需要注意的是,无论是C++的还是C语言后来引入的bool类型,他们虽然是bool类型,但其实不是真正的bool类型,因为他们都占用一个字节,而不是一个二进制位。所以不要想着将一个逻辑变量定义为bool类型来达到节省内存的目的。

字符串

1.和C一样的字符串

2.String类

#include <iostream>
using namespace std;
int main()
{
	string str1 = "hello";
	cout << str1.length() << endl;
	cout << str1.data() << endl;
	return 0;
}

引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。变量名称是变量附属在内存位置中的标签,可以把引用当成是变量附属在内存位置中的第二个标签。因此,可以通过原始变量名称或引用来访问变量的内容。

创建一个引用变量(&)r,并引用为i,然后打印出i和r的地址,可以发现是相同的,因为i和r其实在内存中是一个变量,只是名字不一样而已。需要注意的是,引用变量必须在创建的时候被初始化

#include <iostream>
using namespace std;
int main()
{
	int i = 7;
	int& r = i;
	cout << "address:" << &r << endl;
	cout << "address:" << &i << endl;
	return 0;
}

引用很容易与指针混淆,它们之间有三个主要的不同:

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

C++面向对象

类、属性、方法、对象

创建一个类:关键字class和创建结构体差不多。

类中定义的变量称为类的属性;类成员函数是类的一个成员,也称类的方法;类实例的一个个体就是对象;方法可以操作类的任意对象,可以访问对象中的所有成员。类的方法可以在定义中直接定义(例如下边的say方法),也可以在类的外部使用范围解析运算符 :: 定义该函数(例如下边的getage方法)。

class person
{
private:
	string name;
	int age;
	int high;
	int weight;
public:
	void say(string str)
	{
		cout << str.data() << endl;
	}
	int getage();
};
int person::getage()
{
	return age;
}

类的访问限制

类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。如果没有使用任何访问修饰符,类的成员将被假定为私有成员

public成员在程序中类的外部是可访问的,可以不使用任何成员函数来设置和获取公有变量的值。

private成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。

protected成员变量或函数与私有成员十分相似,但有一点不同,保护成员在派生类(即子类)中是可访问的。

实际中,我们一般会在私有区域或者保护区域定义变量,那怎么修改这些变量的值呢?我们在公有区域定义相关的函数,以便在类的外部也可以调用这些函数。

也就是说一般来说属性是私有或保护的,对这些属性的操作是通过方法来进行的。这样一来就通过接口函数来规范了外部对属性的操作。

#include <iostream>
#include <ctime>
using namespace std;

class person
{
private:
	string name;
	int age;
public:
	bool setname(string str);
	bool setage(int a);
	void say(string str)
	{
		cout << str.data() << endl;
	}
	int getage();
};

int main()
{
	person forest;
	forest.setname("forest");
	forest.setage(23);
	forest.say("good morning");
	cout << forest.getage() <<endl;
	return 0;
}
bool person::setage(int a)
{
	if (typeid(a) != typeid(int))return false;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值