在C++中,有两种成员,一种是对象,一种是类,这两个分别叫什么成员,并且访问方式是啥
时间: 2024-03-30 08:34:48 浏览: 20
在C++中,对象成员通常称为实例成员,也可以简单地称为成员变量和成员函数。访问实例成员需要通过类的对象来访问,即使用点运算符(.)或箭头运算符(->)来访问对象的成员变量和成员函数。
另一方面,类成员通常称为静态成员,也可以称为静态变量和静态函数。静态成员属于类本身,而不是属于类的任何对象。访问静态成员可以通过类名直接访问,也可以通过对象名访问,但建议使用类名来访问静态成员,即使用作用域解析运算符(::)来访问。
相关问题
在c++的类中,类的一个成员对象变量如何调用该类的非静态成员函数
类的一个成员对象变量可以通过指向该成员对象的指针或引用来调用该类的非静态成员函数。例如,假设该类的非静态成员函数为`func()`,类的一个成员对象变量为`obj`,则可以通过以下两种方式调用:
1. 使用指向该成员对象的指针调用非静态成员函数:
```
class MyClass {
public:
void func() { /* ... */ }
};
class MyClass2 {
public:
MyClass obj;
};
MyClass2 obj2;
MyClass* ptr = &obj2.obj;
obj2.obj.func(); // 直接调用
ptr->func(); // 使用指针调用
```
2. 使用引用调用非静态成员函数:
```
class MyClass {
public:
void func() { /* ... */ }
};
class MyClass2 {
public:
MyClass obj;
};
MyClass2 obj2;
MyClass& ref = obj2.obj;
obj2.obj.func(); // 直接调用
ref.func(); // 使用引用调用
```
设计一个分数类,其数据成员包括分子分母,分别用友元和成员函数两种方式实现分数对象的加、减运算。
以下是一个简单的分数类的实现,其中包括数据成员分子和分母,以及友元函数和成员函数实现的加减运算:
```c++
#include <iostream>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int num, int den) : numerator(num), denominator(den) {}
friend Fraction operator+(const Fraction& f1, const Fraction& f2);
friend Fraction operator-(const Fraction& f1, const Fraction& f2);
void print() {
cout << numerator << "/" << denominator << endl;
}
};
Fraction operator+(const Fraction& f1, const Fraction& f2) {
int num = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
int den = f1.denominator * f2.denominator;
return Fraction(num, den);
}
Fraction operator-(const Fraction& f1, const Fraction& f2) {
int num = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
int den = f1.denominator * f2.denominator;
return Fraction(num, den);
}
int main() {
Fraction f1(1, 2);
Fraction f2(3, 4);
Fraction f3 = f1 + f2;
Fraction f4 = f2 - f1;
f3.print(); // 输出 5/4
f4.print(); // 输出 1/4
return 0;
}
```
在这个例子中,我们定义了一个 `Fraction` 类表示分数,其数据成员包括 `numerator` 和 `denominator` 分别表示分子和分母。我们还实现了两个友元函数 `operator+` 和 `operator-`,用于实现 `Fraction` 对象的加减运算。最后在 `main` 函数中,我们创建了两个 `Fraction` 对象,分别进行加减运算并输出结果。
注意,在这个例子中,我们没有实现乘除等其它运算,读者可以根据需要自行扩展。