C++常对象调用静态成员函数的例子
时间: 2023-05-13 16:06:52 浏览: 182
当一个常对象调用一个静态成员函数时,编译器会忽略常对象的 const 属性,因为静态成员函数不会访问对象的非静态成员。因此,常对象可以调用静态成员函数。
以下是一个示例代码:
```c++
#include <iostream>
using namespace std;
class MyClass {
public:
static void print() {
cout << "Hello, world!" << endl;
}
};
int main() {
const MyClass obj;
obj.print(); // 调用静态成员函数
return 0;
}
```
输出结果为:
```
Hello, world!
```
相关问题
C++类的常对象为什么可以调用静态成员函数,举个实际的例子
常对象可以调用静态成员函数是因为静态成员函数不依赖于对象,而是属于整个类的,所以即使对象是常对象也可以调用静态成员函数。举个例子,假设有一个类A,其中有一个静态成员函数static void func(),那么常对象可以这样调用:const A a; a.func();
写一个C++使用类中的静态成员函数返回一个静态成员对象的例子
下面是一个简单的例子,其中包含一个名为`MyClass`的类,它具有一个名为`staticObj`的静态成员对象和一个名为`staticFunc`的静态成员函数,该函数返回`staticObj`:
```cpp
#include <iostream>
class MyClass {
public:
static MyClass& staticFunc() {
static MyClass staticObj;
return staticObj;
}
void print() {
std::cout << "Hello, World!\n";
}
};
int main() {
MyClass::staticFunc().print();
return 0;
}
```
在这个例子中,`staticFunc`函数返回一个对`staticObj`的引用,这是在函数内部静态地创建的。由于静态对象的生命周期与程序的生命周期相同,因此在程序的整个运行期间,`staticObj`对象将保持在内存中,而且每次调用`staticFunc`时,都将返回对相同的`staticObj`对象的引用。
在`main`函数中,我们使用作用域解析运算符来访问`staticFunc`函数。通过在返回的对象上调用`print`函数,我们可以验证该例子是否有效。
阅读全文