编程思想和方法的改变,披着C++外衣的C程序员。
1)类的成员函数可以直接访问该类其它的成员函数(可以递归)。
2)类的成员函数可以重载,可以使用默认参数。
3)类指针的用法与结构体指针用法相同。
4)类的成员可以是任意数据类型(类中枚举)。
5)可以为类的成员指定缺省值(C++11标准)。
6)类可以创建对象数组,就像结构体数组一样。
7)对象可以作为实参传递给函数,一般传引用。
8)可以用new动态创建对象,用delete释放对象。
9)在类的外部,一般不直接访问(读和写)对象的成员,而是用成员函数。数据隐藏是面向对象编程的思想之一。
10)对象一般不用memset()清空成员变量,可以写一个专用于清空成员变量的成员函数。
11)对类和对象用sizeof运算意义不大,一般不用。
12)用结构体描述纯粹的数据,用类描述对象。
13)在类的声明中定义的函数都将自动成为内联函数;在类的声明之外定义的函数如果使用了inline限定符,也是内联函数。
14)为了区分类的成员变量和成员函数的形参,把成员变量名加m_前缀或_后缀,如m_name或name_。
15)类的分文件编写。
这个示例将展示一个类的定义和使用,包括成员变量、成员函数的定义,以及对象的创建和操作。
假设我们有一个简单的类Person
,用来描述一个人的姓名和年龄,并且包含一些基本操作。
#include <iostream>
#include <string>
class Person {
public:
// 成员变量,带有m_前缀
std::string m_name;
int m_age;
// 构造函数,允许带有默认参数
Person(std::string name = "Unknown", int age = 0) : m_name(name), m_age(age) {}
// 成员函数,用于打印个人信息
void printInfo() const {
std::cout << "Name: " << m_name << ", Age: " << m_age << std::endl;
}
// 成员函数,修改年龄
void setAge(int age) {
m_age = age;
}
// 成员函数,清空信息
void clear() {
m_name = "";
m_age = 0;
}
};
int main() {
// 创建对象数组
Person people[2] = {Person("Alice", 30), Person("Bob", 25)};
// 访问并使用成员函数
for (int i = 0; i < 2; ++i) {
people[i].printInfo();
}
// 动态创建对象
Person* p = new Person("Charlie", 40);
p->printInfo();
// 修改对象信息
p->setAge(41);
p->printInfo();
// 使用delete释放对象
delete p;
return 0;
}
这段代码演示了:
- 如何定义一个类及其构造函数和成员函数。
- 类的成员函数可以访问和修改类的其他成员。
- 如何创建类的对象数组。
- 如何动态创建和删除对象。
- 类的封装性,通过成员函数而不是直接操作数据成员。
以上是根据您的要求,一个包含多个C++面向对象特性的基本示例。