在 C++ 中,函数是程序中的基本单位。每个函数都拥有返回类型、函数名和参数列表,函数执行后返回相应的结果。
#include <iostream>
using namespace std;
// 定义一个简单的函数,返回两个数的和
int add(int a, int b) {
return a + b; // 返回两数之和
}
int main() {
int result = add(10, 20); // 调用 add 函数
cout << "Sum: " << result << endl;
return 0;
}
int
表示该函数返回一个整数。add
函数接收两个整数参数,计算它们的和并返回结果。main()
函数中调用 add
,并将结果存储到 result
变量中。C++ 支持三种传递参数的方式:按值传递、按引用传递和按指针传递。
函数接收参数的副本,修改副本不会影响原始数据。
#include <iostream>
using namespace std;
void addValue(int x) {
x += 10; // 修改副本
}
int main() {
int a = 5;
addValue(a); // 传递 a 的副本
cout << "a = " << a << endl; // a 不变,仍然是 5
return 0;
}
通过引用传递参数,函数直接修改原始数据。
#include <iostream>
using namespace std;
void addReference(int& x) {
x += 10; // 修改原数据
}
int main() {
int a = 5;
addReference(a); // 传递 a 的引用
cout << "a = " << a << endl; // a 被修改,结果为 15
return 0;
}
使用指针传递参数,函数通过指针修改数据。
#include <iostream>
using namespace std;
void addPointer(int* x) {
*x += 10; // 通过指针修改数据
}
int main() {
int a = 5;
addPointer(&a); // 传递 a 的地址
cout << "a = " << a << endl; // a 被修改,结果为 15
return 0;
}
C++ 是一种支持面向对象编程(OOP)的语言,它通过封装、继承和多态来提供强大的结构化设计能力。
C++ 中的类与 Python 类似,类成员包含数据和方法。构造函数用于初始化对象。
#include <iostream>
using namespace std;
class Person {
public:
string name;
int age;
// 构造函数
Person(string n, int a) {
name = n;
age = a;
cout << "Constructor called!" << endl;
}
void introduce() {
cout << "My name is " << name << " and I am " << age << " years old." << endl;
}
~Person() { // 析构函数
cout << "Destructor called!" << endl;
}
};
int main() {
// 创建对象时自动调用构造函数
Person p1("John", 25);
p1.introduce(); // 调用成员函数
return 0; // 程序结束时自动调用析构函数
}
// 输出
Constructor called!
My name is John and I am 25 years old.
Destructor called!
Person(string n, int a)
初始化 name
和 age
成员。~Person()
是析构函数,当对象生命周期结束时自动调用,用于清理资源。introduce
输出对象的属性。继承是 OOP 的核心概念之一,它允许子类继承父类的成员函数和数据成员,从而实现代码复用。
#include <iostream>
using namespace std;
// 基类
class Animal {
public:
void speak() {
cout << "Animal speaks!" << endl;
}
};
// 派生类
class Dog : public Animal {
public:
void speak() {
cout << "Dog barks!" << endl;
}
};
int main() {
Animal a;
Dog d;
a.speak(); // 调用基类的函数
d.speak(); // 调用派生类的函数
return 0;
}
// 输出
Animal speaks!
Dog barks!
Animal
:提供了 speak()
函数。Dog
:继承了 Animal
类并重写了 speak()
函数。多态是 C++ 中的一项强大特性,它允许同一个接口以不同的方式进行操作。
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() { // 使用 virtual 关键字声明虚函数
cout << "Animal speaks!" << endl;
}
};
class Dog : public Animal {
public:
void speak() override {
cout << "Dog barks!" << endl;
}
};
int main() {
Animal * animalPtr;
Dog dog;
animalPtr = &dog;
animalPtr->speak(); // 动态绑定,调用 Dog 类的 speak
return 0;
}
// 输出
Dog barks!
解析:
speak()
被声明为 virtual
,这使得 C++ 能够根据对象的实际类型决定调用哪个函数。animalPtr
指向 Dog
对象时,调用 speak()
会调用 Dog
类中的 speak()
函数。注意
tem.cpp:13:18: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
13 | void speak() override {
| ^
1 warning generated.
What is a C++11 extension [-Wc++11-extensions] https://stackoverflow.com/questions/45291142/what-is-a-c11-extension-wc11-extensions
如果使用Code Runner,添加配置如下:
如果是命令行运行,添加参数 -std=c++17
g++ -std=c++17 tem.cpp -o tem
在这篇文章中,我们探讨了 C++ 中函数的定义与返回值、参数传递方式、构造函数、析构函数、继承和多态等重要概念。C++ 提供了更高效和灵活的内存控制,使得它在性能要求较高的场合比 Python 更具优势。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有